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

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

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

例如:

数组:[6, 10, 3, 7]
  • 第一次迭代 − 针对第一个位置从0到3遍历整个数组。在遍历整个数组后,我们发现10是最大的数字,所以交换6和10。
结果数组: [10, 6, 3, 7]
  • 第二次迭代 − 再次遍历整个数组,并找到第二个位置的元素。
结果数组: [10, 7, 3, 6]
  • 第三次迭代 − 再次遍历整个数组并找到第三个位置元素。
结果数组: [10, 7, 6, 3]
所以降序排列好的数组是[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] {

   // 创建原始数组的副本
   var nArr = arr 

   // 选择最大的元素并将其放在数组的开头.
   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)。虽然选择排序简单易用,但其实现不稳定,而且在大型数据集上效果不佳。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Swift 示例