快速排序(Swift实现)

时间:2024-10-21 17:10:45
func quickSort(_ arr: inout [Int], _ low: Int, _ high: Int) { //需要排序的区间只包含一个数字,则不需要重排数组,直接返回。 if low < high { let pivot = partition(arr,low,high) quickSort(arr,low,privot - 1) quickSort(arr,privot + 1,high) } } private partition(_ arr: inout [Int], _ low: Int, _ high: Int) { var pivot = arr[low] while low < high { //high哨兵要找到一个小于pivot的数前停下来 while low < high && arr[high] >= pivot { high -= 1 } arr[low] = arr[high] //low哨兵要找到一个大于pivot的数前停下来 while low < high && arr[low] <= pivot { low += 1 } arr[high] = arr[low] } //此时退出循环的条件是哨兵low和哨兵high相遇 //将基准数归位 arr[low] = pivot return low } //时间复杂度:O(nlog2n),最坏O(N^2) 空间复杂度:O(nlog2n) 是不稳定算法