/**
* 基本思想:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;
* 其中一部分的所有数据都比另一部分的所有数据要小。然后按照此方法对这两部分
* 数据分别进行快速排序,整个过程可以递归进行
*
* 时间复杂度:O(NlogN) 稳定性:不稳定
*/
const arr = [2, 10, 7, 9, 3, 4, 7, 1, 6];
// 数组的左右边界
let l = 0;
let r = arr.length - 1;
// @Params arr 要排序的数组
// @Params left 数组的左边界(下标)
// @Params right 数组的右边界(下标)
function quickSort(arr,left,right){
if(left > right){
return;
}
let storeIndex = left;
// 基数
let pivot = arr[right];
for(let i=left;i<right;i++){
// 从左往右,记录比基数小的数的位置
if(arr[i] < pivot){
[arr[i],arr[storeIndex]] = [arr[storeIndex],arr[i]]
storeIndex++;
}
}
// 比基数大的,放到比基数小的数的后面
[arr[right],arr[storeIndex]] = [arr[storeIndex],arr[right]]
quickSort(arr,left,storeIndex-1)
quickSort(arr,storeIndex+1,right)
}
console.log(arr, "<----排序前")
quickSort(arr,l,r);
console.log(arr, "<----排序后")
快速排序
最新推荐文章于 2023-12-01 23:14:38 发布