根据快速排序思想:
- 首先找到基准数。
- 遍历数组,比基准数小的放左边,比基准数大的放右边。
- 把左右数分别放在数组里执行1,2步操作,直到左右数组里只有一个数。
- 返回排好序的数组,即左数组+基准数+右数组
实现代码:
const quickSort = (arr)=>{
//定义一个基准数
let base_num = arr[0];
//定义左数组
let left_arr = [];
//定义右数组
let right_arr=[];
//一个for循环,比基准数小的放左边,比基准数大的放右边
for(let i=1;i<arr.length;i++){
if(arr[i]<base_num){
left_arr.push(arr[i]);
}else{
right_arr.push(arr[i]);
}
}
//如果左数组/右数组的长度大于1,用递归进行重新排序,直到左右数组的长度都为1,再结束递归,返回排好序的数组。
if(left_arr.length>=2){
left_arr = quickSort(left_arr);
}
if(right_arr.length>=2){
right_arr = quickSort(right_arr);
}
return left_arr.concat(base_num,right_arr);
}
let arr = [9,6,2,1,4,5,7,8,0,3];
console.log(quickSort(arr)); //[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]