Swift 程序使用选择排序对数组进行升序排序

swiftserver side programmingprogramming更新于 2025/9/23 12:52:17

Swift 中的选择排序算法是一种排序算法,它从给定的未排序数组中选择最小或最大元素,并将该元素放置在未排序数组的开头。此过程持续到最后一个未排序元素。现在我们使用选择排序对数组进行升序排序。

例如 -

数组:[6, 10, 3, 7]
  • 第一次迭代 - 对于第一个位置,从 0 到 3 遍历整个数组。遍历整个数组后,我们发现 3 是最小的数字,因此对于第一个位置,将 6 替换为 3。

结果数组:[3, 10, 6, 7]
  • 第二次迭代 - 再次遍历整个数组并找到第二个元素位置。

结果数组:[3, 6, 10, 7]
  • 第三次迭代 − 再次遍历整个数组并找到第三个位置的元素。

结果数组:[3, 6, 7, 10]
因此,按升序排列的数组为 [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] {

    // 创建原始数组的副本
    var nArr = arr
    
    // 选择最小元素并
    // 然后将其放置在数组的开头
   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("按升序排序的数组:", resultantArr)

输出

按升序排序的数组:[1, 1, 2, 3, 5, 6, 8, 8, 9, 10, 23]

结论

以上就是如何使用选择排序对数组进行升序排序的方法。这里我们使用迭代方法实现选择排序。因此,选择排序的时间复杂度为 O(N²)。虽然选择排序简单易行,但实现起来并不稳定,而且它不适用于大型数据集。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部