function quickSort(arr){
if(!arr || arr.length === 0) return [];
// 先选一个班长,小于班长的站左边,大于班长的站右边
let leader = arr[0];
let left = []; // 定义左边的位置
let right = []; // 定义右边的位置
for(let i = 1; i < arr.length; i ++){ // 第一个位置为班长,所以从第二个开始
if(arr[i] < leader){ // 如果小于班长,则站左边
left.push(arr[i]);
} else { // 否则,站右边
right.push(arr[i]);
}
}
left = quickSort(left); // 将左侧的进行递归快排
right = quickSort(right); // 将右侧的进行递归快排
left.push(leader); // 将班长放入左边位置的末尾;
return left.concat(right); // 左右拼接
}
测试:
let arr = [4,2,1,8,6,3,9];
console.log(quickSort(arr)) // [1, 2, 3, 4, 6, 8, 9]