快速排序
function swap(arr,i,j){
[arr[i],arr[j]] = [arr[j],arr[i]];
}
function partition(arr,left,right){
let pivot = arr[Math.floor((left+right)/2)], //选择中间项作为基准
i = left,
j = right;
while(i<=j){
while(arr[i]<pivot){
i++;
}
while(arr[j]>pivot){
j--;
}
if(i<=j){
swap(arr,i,j);
i++;
j--;
}
}
return i;
};
function quickSort(arr,left,right){
let index;
if(arr.length>1){
index = partition(arr,left,right);
if(left<index-1){
quickSort(arr,left,index-1);
}
if(index<right){
quickSort(arr,index,right);
}
}
return arr;
}
复制代码
quickSort([8,7,6,5,4,3,2,1],0,7) //[1,2,3,4,5,6,7,8]