使用選擇排序演算法將陣列按降序排序的 Swift 程式


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

例如 -

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

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

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

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

演算法

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

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

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

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

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

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

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

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

示例

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

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

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

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

輸出

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

結論

因此,這就是我們如何使用選擇排序將陣列按降序排序。此方法也可以用於浮點數和雙精度資料型別,只需對語法進行一些小的更改。在這裡,我們使用迭代方法來實現選擇排序。因此,選擇排序的時間複雜度為 O(N2)。雖然選擇排序簡單易懂,但實現不穩定,並且不適用於大型資料集。

更新於: 2023年4月24日

518 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.