Swift程序 使用冒泡排序算法以升序排序数组
在 Swift 中,冒泡排序算法是最简单的搜索算法。此算法通过重复交换相邻的两个元素(如果他们不在正确的位置)来对元素进行排序。现在我们使用冒泡排序以升序排序数组。
例如 –
数组 - [4, 7, 1, 8]
- 第1次迭代 – 比较两个元素,如果第一个元素大于第二个元素,则交换它们的位置。否则,转到下一对。
[4, 7, 1, 8] 4<7,保持不变
[4, 7, 1, 8] 7>1,交换位置
[4, 1, 7, 8] 7<8,保持不变
- 第2次迭代 – 再次比较两个元素,如果第一个元素大于第二个元素,则交换它们的位置。
[4, 1, 7, 8] 4>1,交换位置
[1, 4, 7, 8] 4<7,保持不变
[1, 4, 7, 8] 7<8,保持不变
所以升序排序后的数组为 [1, 4, 7, 8]
算法
- 步骤1 – 创建一个函数,使用冒泡排序算法以升序排序数组。
-
步骤2 – 在函数内部,我们运行双重 for-in 循环来遍历给定数组中每个相邻元素对。
-
步骤3 – 检查 if array[y]>array[y+1]。如果是,则交换元素的位置。如果不是,则移动到下一对。
-
步骤4 – 现在在函数外部创建一个整数类型的数组。
-
步骤5 – 调用函数并将数组传递给它。
-
步骤6 – 打印已排序的数组。
示例
在以下示例中,我们将创建一个名为 mBubbleSort() 的函数。此函数以数组作为输入,使用冒泡排序算法将给定数组排序为升序。该函数使用嵌套的 for-in 循环来迭代给定数组中每个相邻元素对,并在第一个元素大于第二个元素时进行交换。此过程一直持续到最后一个未排序的元素。在这里,该函数借助 inout 参数修改原始数组。最后,显示排序后的数组。
import Foundation
import Glibc
// 使用冒泡排序将数组升序排列的函数
func mBubbleSort(_ 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 = [56, 2, 89, 3, 87, 22, 1, 6, 4]
mBubbleSort(&arr)
print("以升序排序后的数组: \(arr)")
输出
以升序排序后的数组: [1, 2, 3, 4, 6, 22, 56, 87, 89]
结论
这就是如何使用冒泡排序算法以升序排序数组的方法。此算法仅适用于小型元素集,对于更大数量的元素,它的平均时间复杂度和最坏时间复杂度都较高。