使用选择排序算法将数组按降序排序的 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 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告