1: 快速排序的思路
1.1: 先将数列中取出一个数作为基准数
1.2: 先将比这个数小的全部放到它的左边, 大于或者等于它的数全部放到它的右边
1.3: 在左区间重复第二步, 直到各个区间只有一个数.
1.4: 在将有序的区间合并起来, 这样这个数组就是有序排列了
let arr = [31, 23, 34, 2, 13, 234]
function qulickSort (arr) {
// 1; 找基准数, 并且将比基准数小的全部放到左边(左数组)
// 大于大于基准数的全部放到右边(右数组)
let base_num = arr[0]; // 基准数
let left_arr = []; // 左数组
let right_arr = []; // 右数组
for (let i=1, i<arr.lenght, i++) {
// 比基准数小的都放在左数组, 否则都放在右数组
if(arr[i]<base_num) {
left_arr.push(arr[i]);
}else {
right_arr.push(arr[i]);
}
}
// 2: 对左数组分别进行快排. 返回排序好的左右数组
// (条件: 就是对数组中的元素要大于等于2个)
if(left_arr.length>2) left_arr=qulickSort(left_arr);
if(rigth_arr.length>2) rigth_arr=qulickSort(rigth_arr);
// 3: 合并排序好之后的左数组, 基准数, 排序好的右数组, 并且返回
return left_arr.concat(base_num, rigth_arr)
}
let res=qulickSort(arr);
console.log(res);