原理解析
不断比较相邻的两个元素,如果它们的顺序不符合要求就互相调换。
问题描述:
把数组 [61,5,33,44,22] 进行从小到大进行排序
解题步骤
步骤如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个,直到把最大的元素放到数组尾部。
- 遍历长度减一,对剩下的元素从头重复以上的步骤。
- 直到没有任何一对数字需要比较时完成。
代码:
//冒泡排序
func p_bubbleSort(array:inout [Int]) -> [Int] {
guard array.count > 1 else {
return array
}
for i in 0..<(array.count - 1) {//外层循环为 数组长度 - 1
for j in 0..<(array.count - 1 - i) {// 内层循环为 外层循环 - i
if array[j] > array[j + 1] {// 冒泡操作
array.swapAt(j, j + 1)
}
}
}
return array
}
测试:
@objc func p_bubbleSort() {
var list = [61,5,33,44,22]
let result = p_bubbleSort(array: &list)
print(result)
}
结果:
[5, 22, 33, 44, 61]