冒泡排序
func bubbleSort(arr: inout [Int]) {
//两两比较 需要比较 count - 1 次
for i in 0..<arr.count-1 {
//以下 for 循环走完后即可将最大值放到最后,此处count-1 后还需要 - i
for j in 0..<arr.count-1-i {
// 如果 前面的数大于后面的数,就将这两个数交换位置
if arr[j] > arr[j+1] {
arr.swapAt(j, j+1)
}
}
}
}
方法调用
var arr = [2, 4, 9, 8, 1, 0, 3, 5, 2]
print(arr)
bubbleSort(arr: &arr)
print(arr)
控制台输出
[2, 4, 9, 8, 1, 0, 3, 5, 2]
[0, 1, 2, 2, 3, 4, 5, 8, 9]
快速排序
func quickSort(arr: inout [Int], start: Int, end: Int) {
//递归的结束条件
if start >= end {
return
}
var low = start
var high = end
//标准数
let stand = arr[start]
while low < high {
// 从右边开始比较,比key大的数位置不变
while low < high && stand <= arr[high] {
high-=1
}
// 只要出现一个比key小的数,将这个数放入左边i的位置
arr[low] = arr[high]
// 从左边开始比较,比key小的数位置不变
while low < high && stand >= arr[low] {
low+=1
}
// 只要出现一个比key大的数,将这个数放入右边j的位置
arr[high] = arr[low]
}
// 将key放入low的位置,则左侧数都比stand小,右侧数都比stand大
arr[low] = stand
quickSort(arr: &arr, start: start, end: low)//左递归
quickSort(arr: &arr, start: low+1, end: end)//右递归
}
插入排序
//插入排序
func insertSort(arr: inout [Int]) {
/// 遍历所有数据
for i in 1..<arr.count { //注意起始位置
/// 从i 开始 倒着 --
for j in (1...i).reversed() {
/// 如果后面的值比前面的值小,就交换位置
if arr[j] < arr[j-1] {
arr.swapAt(j, j-1)
}
}
}
}
正在更新中