使用插入排序法將陣列按升序排列的Swift程式


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

插入排序的工作原理

給定未排序陣列:

要將陣列按升序排序,請比較前兩個元素 2 和 5。

此處 2 和 5 都是升序的。因此,我們移動到接下來的兩個元素 5 和 3。

此處 5 大於 3,因此我們交換 5 和 3 的位置。

現在我們再次比較 2 和 3,此處 2 和 3 都是升序的,因此我們移動到接下來的元素 5 和 4。

此處 5 大於 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
        
      // Moving elements that are greater than initialVal
      // one position on the right
      while y > 0 && resultantArray[y-1] > initialVal{
         resultantArray[y] = resultantArray[y-1]
         y -= 1
      }
      resultantArray[y] = initialVal
   }
   return resultantArray
}

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

print(res)

輸出

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

結論

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

更新於:2023年5月10日

瀏覽量:355

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.