参考:〖雪月清〗
地址:https://blog.csdn.net/qq_52595134/article/details/118943109
快速排序:设置第一个为key值,一边从左至右,一边从右至左进行对比,若比key值小放左边,比key值大放右边,最后key值放居中位置,重复递归,直至左边大于右边。
时间复杂度:
最好情况:nlogn
最坏情况:n的平方
空间复杂度:O(n)
实例代码:
function quickSort(arr, left, rigth) {
let l = left
let r = rigth - 1
let key = arr[l]
if (l+1 >= r) return
while(l < r) {
while(l < r && arr[r] >= key) {
r--
}
arr[l] = arr[r]
while(l < r && arr[l] <= key) {
l++
}
arr[r] = arr[l]
}
arr[l] = key
quickSort(arr, left, l)
quickSort(arr, l+1, rigth)
return arr
}
arr = [5,4,8,9,8,3,9,41]
console.log(quickSort(arr, 0, arr.length))//输出 [3, 4, 5, 8, 8, 9, 9, 41]