使用選擇排序法對陣列進行升序排序的Swift程式


Swift中的選擇排序演算法是一種排序演算法,它從給定的未排序陣列中選擇最小或最大的元素,並將該元素放置在未排序陣列的開頭。這個過程持續到最後一個未排序的元素。現在我們使用選擇排序法對陣列進行升序排序。

例如:

Array: [6, 10, 3, 7]
  • 第一次迭代 - 對於第一個位置,遍歷整個陣列,從0到3。遍歷整個陣列後,我們發現3是最小的數字,所以對於第一個位置,將6與3交換。

Resultant Array: [3, 10, 6, 7]
  • 第二次迭代 - 再次遍歷整個陣列,找到第二個位置的元素。

Resultant Array: [3, 6, 10, 7]
  • 第三次迭代 - 再次遍歷整個陣列,找到第三個位置的元素。

Resultant Array: [3, 6, 7, 10]
So the sorted array in ascending order is [3, 6, 7, 10]

演算法

  • 步驟1 - 建立一個函式,使用選擇排序演算法對陣列進行升序排序。

  • 步驟2 - 在函式內部,將最小值初始化為mIndex變數。

  • 步驟3 - 使用巢狀for-in迴圈遍歷陣列的每個元素以找到最小元素。

  • 步驟4 - 在遍歷過程中,如果我們找到小於mIndex的元素,則交換這兩個值。

  • 步驟5 - 然後將mIndex的值增加到下一個元素。

  • 步驟6 - 現在在函式外部建立一個整數型別的陣列。

  • 步驟7 - 呼叫函式並將陣列傳遞給它。

  • 步驟8 - 列印排序後的陣列。

示例

在下面的示例中,我們將建立一個名為selectionSortAlgo()的函式。此函式以陣列作為輸入,並使用選擇排序演算法將給定陣列排序為升序。此函式獲取陣列的第一個元素並假設該陣列是最小的,然後將其與其餘陣列元素進行比較並檢查最小元素。如果找到最小元素,則將索引更新為該元素。之後,我們遍歷陣列並將第一個元素與最小元素交換。此過程持續到最後一個未排序的元素,最後顯示升序的排序陣列。

import Foundation
import Glibc
 
func selectionSortAlgo(arr: [Int]) -> [Int] {

   // Creating a copy of original array
   var nArr = arr 
    
   // Selecting minimum element and 
   // then place it at the beginning of the array
   for x in 0..<nArr.count {
      var mIndex = x
      for y in x+1..<nArr.count {
         if nArr[y] < nArr[mIndex] {
            mIndex = y
         }
      }
      if mIndex != x {
         nArr.swapAt(x, mIndex)
      }
   }
   return nArr
}

let array = [9, 1, 8, 1, 3, 5, 10, 2, 8, 23, 6]
let resultantArr = selectionSortAlgo(arr: array)
print("Sorted array in ascending order:", resultantArr)

輸出

Sorted array in ascending order: [1, 1, 2, 3, 5, 6, 8, 8, 9, 10, 23]

結論

這就是我們如何使用選擇排序法對陣列進行升序排序。在這裡,我們使用迭代方法實現選擇排序。因此,選擇排序的時間複雜度為O(N2)。雖然選擇排序簡單易懂,但實現並不穩定。它也不適用於大型資料集。

更新於:2023年4月24日

1K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

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