使用插入排序以降序排列陣列的 Swift 程式


在 Swift 中,插入排序是一種排序技術,其中給定的陣列被虛擬地分成兩個部分,即已排序部分和未排序部分。然後順序搜尋陣列,比較未排序部分中的兩個元素,並將它們移動到已排序部分的正確位置。使用插入排序,我們可以輕鬆地按升序或降序對陣列元素進行排序。因此,在本文中,我們將學習如何使用插入排序以降序對陣列進行排序。

插入排序的工作原理

給定未排序陣列

要以降序對陣列進行排序,請比較前兩個元素 2 和 5。

這裡 2 小於 5。因此,我們交換元素的位置。

現在再次比較元素 2 和 3。這裡 2 小於 3,因此我們交換位置。

現在我們比較元素 5 和 3。這兩個元素都處於正確的位置,因此我們現在移動到下一個元素。

再次比較元素 2 和 4,其中 2 小於 4,因此我們交換它們的位置。現在我們比較元素 3 和 4,這裡 3 小於 4,因此我們交換它們的位置。

最後,我們得到以降序排序的陣列。

演算法

  • 步驟 1 − 建立一個以陣列作為引數並返回已排序陣列的函式。

  • 步驟 2 − 在函式內部建立原始陣列的副本。

  • 步驟 3 − 使用 for-in 迴圈遍歷從索引 1 到 n-1 的每個陣列元素。

  • 步驟 4 − 然後執行一個 while 迴圈並比較當前元素與其前驅元素。

  • 步驟 5 − 如果已排序陣列中的元素大於當前元素,則移動到下一個元素。否則將最小元素向右移動。

  • 步驟 6 − 將當前值插入結果陣列。

  • 步驟 7 − 返回已排序陣列。

  • 步驟 8 − 建立一個數組,呼叫函式並將其傳遞到其中。

  • 步驟 9 − 列印輸出。

示例

在以下 Swift 程式中,我們將使用插入排序以降序對陣列進行排序。為此,我們將建立一個數組,然後將其傳遞到函式中。然後函式建立原始陣列的副本。然後它遍歷陣列的元素,從索引 1 開始,對於每個元素,它將把其值儲存在 initialVal 中。然後它開始一個 while 迴圈,該迴圈將每個小於 initialVal 的元素向右移動一個位置。此迴圈將持續到 initialVal 中存在的元素小於 initialVal 為止。之後,函式將 initialVal 插入到已排序陣列的正確位置,最後將返回已排序陣列。

import Foundation
import Glibc

func sorting(arr:[Int]) -> [Int] {
   var resultantArray = arr
    
   for x in 1..<resultantArray.count{
      let initialVal = resultantArray[x]
      var y = x-1
        
      // Moving elements that are smaller than initialVal
      // one position on the right
      while y >= 0 && resultantArray[y] < initialVal{
         resultantArray[y+1] = resultantArray[y]
         y -= 1
      }
      resultantArray[y+1] = initialVal
   }
   return resultantArray
}

var mArr = [3, 1, 9, 4, 2, 10, 5]
var res = sorting(arr:mArr)

print(res)

輸出

[10, 9, 5, 4, 3, 2, 1]

結論

這就是我們如何使用插入排序以降序對陣列進行排序。插入排序是最簡單的排序演算法,但它僅適用於小型資料集。它不適用於較大的資料集。插入排序的最壞情況時間複雜度為 O(N2),其餘時間複雜度為 O(N)

更新於: 2023 年 5 月 10 日

867 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告