Swift 程序实现冒泡排序算法
在 Swift 中,冒泡排序算法是最简单的搜索算法。该算法通过反复交换相邻元素(如果它们不在正确的位置)来对元素进行排序。该算法仅适用于元素数量较少的情况,由于其平均和最坏情况的时间复杂度较高,因此不适用于元素数量较多的情况。因此,冒泡排序的工作原理如下:-
假设我们有以下数组:-

现在我们使用冒泡排序对数组进行升序排序。从第一个索引开始,我们比较第一个元素和第二个元素。如果第一个元素大于第二个元素,则交换元素的位置。类似地比较第二个和第三个元素,如果第二个元素大于第三个元素,则交换元素的位置。此过程持续到最后一个未排序元素。
第一次迭代

第二次迭代
在第二次迭代中,我们必须再次执行相同的步骤,直到最后一个元素。

这就是我们使用冒泡排序对数组进行排序的方法。
算法
步骤 1 − 创建一个函数,使用冒泡排序按升序对数组进行排序算法。
步骤 2 − 在函数内部,我们运行嵌套的 for-in 循环来遍历给定数组中的每一对相邻元素。
步骤 3 − 检查 array[y]>array[y+1] 是否成立。如果是,则交换两个元素的位置。如果不是,则移动到下一对。
步骤 4 − 现在在函数外部创建一个整数类型的数组。
步骤 5 − 调用该函数并将数组传递给它。
步骤 6 − 打印排序后的数组。
示例
在下面的示例中,我们将创建一个名为 myBubbleSort() 的函数。此函数以数组作为输入,并借助冒泡排序算法将给定数组按升序排列。此函数使用嵌套的 for-in 循环遍历给定数组中每对相邻元素,如果第一个元素大于第二个元素,则交换元素。此过程持续到最后一个未排序元素。此处,函数借助 inout 参数修改原始数组。最后显示排序后的数组。
import Foundation
import Glibc
// 使用冒泡排序对数组进行排序的函数
func myBubbleSort(_ array: inout [Int]) {
let size = array.count
for x in 0..<size {
for y in 0..<size-x-1 {
// 比较两个相邻的元素
if array[y] > array[y+1] {
// 如果元素的顺序不正确,则交换它们
let temp = array[y]
array[y] = array[y+1]
array[y+1] = temp
}
}
}
}
// 整数类型数组
var arr = [10, 87, 2, 90, 34, 1, 6, 78]
myBubbleSort(&arr)
print("排序后的数组:\(arr)")
输出
排序后的数组:[1, 2, 6, 10, 34, 78, 87, 90]
结论
以上就是我们实现冒泡排序算法的方法。它仅适用于小数据集。平均和最坏情况下的复杂度均为 O(n²),其中 n 为元素个数。