Swift 程序使用插入排序对数组进行降序排序
在 Swift 中,插入排序是一种排序技术,它将给定的数组虚拟地分成两部分:已排序部分和未排序部分。然后按顺序搜索数组,比较未排序部分中的两个元素,并将它们移动到已排序部分的正确位置。使用插入排序,我们可以轻松地按升序或降序对数组元素进行排序。因此,在本文中,我们将学习如何使用插入排序对数组进行降序排序。
插入排序的工作原理
给定一个未排序的数组

要对数组进行降序排序,请比较前两个元素 2 和 5。

这里 2 小于 5。因此,我们交换元素的位置。

现在再次比较元素 2 和 3。这里 2 小于 3,所以我们交换它们的位置。

现在我们比较元素 5 和 3。两个元素都处于正确的位置,所以现在我们移动到下一个元素。

再次比较元素 2 和 4,其中 2 小于 4,所以我们交换它们的位置。现在我们比较元素 3 和 4,这里 3 小于 4,所以我们交换它们的位置。

最后,我们得到按降序排列的排序数组。
算法
步骤 1 - 创建一个函数,该函数接受一个数组作为参数并返回排序后的数组。
步骤 2 - 在函数内部创建原始数组的副本。
步骤 3 - 使用 for-in 循环遍历数组中从索引 1 到 n-1 的每个元素。
步骤 4 - 然后运行while 循环并将当前元素与其前一个元素进行比较。
步骤 5 - 如果排序后的数组中的元素大于当前元素,则移动到下一个元素。如果不大于,则将最小元素向右移动。
步骤 6 - 将当前值插入到结果数组中。
步骤 7 - 返回排序后的数组。
步骤 8 - 创建一个数组,调用函数并将其传递给该函数。
步骤 9 - 打印输出。
示例
在下面的 Swift 程序中,我们将使用插入排序对数组进行降序排序。为此,我们将创建一个数组,然后将该数组传递给函数。然后,该函数创建原始数组的副本。然后,它从索引 1 开始迭代数组的元素,并将每个元素的值存储在 initalVal 中。之后,它启动一个 while 循环,将每个小于 initialVal 的元素向右移动一位。此循环持续到 initialVal 中的元素小于 initialVal。之后,该函数将 initialVal 插入到排序后的数组中的正确位置,并最终返回排序后的数组。
import Foundation
import Glibc
func sorting(arr:[Int]) -> [Int] {
var resultantArray = arr
for x in 1..<resultantArray.count{
let initialVal = resultantArray[x]
var y = x-1
// 移动小于 initialVal 的元素
// 右边一个位置
while y >= 0 && resultantArray[y] < initialVal{
resultantArray[y+1] = resultantArray[y]
y -= 1
}
resultantArray[y+1] = initialVal
}
return resultantArray
}
var mArr = [3, 1, 9, 4, 2, 10, 5]
var res = sorting(arr:mArr)
print(res)
输出
[10, 9, 5, 4, 3, 2, 1]
结论
以上就是使用插入排序对数组进行降序排序的方法。插入排序是最简单的排序算法,但它只适用于较小的数据集。对于较大的数据集,它的效果不佳。插入排序的最坏情况时间复杂度为 O(N²),其余情况的时间复杂度为 O(N)