1.数组中随便找一个数用于比较(一般确定为第一个数)

const r = [10,3,9,2,8,1,5,4,6,7];
let baseData = data.splice(0,1)[0];

2.定义两个数组分别存放每次排序后参照数左边和右边的数。左边存放比参照数小的数,右边存放比参照数大的数。

    let left = [],
      right = [];

3.开始执行一次排序,由于我们选择参照数的时候会把这个数从数组中删掉因此,我们循环的次数比data.length少一个。将比较的结果存入左或右的数组。

for (let i = 0; i< data.length; i++){
      if(data[i] > baseData){
        right.push(data[i]);
      }else{
        left.push(data[i]);
      }
    }

4.因为并不是一次排序就可以将数组由大到小或由小到大排列,所以我们需要递归。对左边的数组和右边的数组继续排序。最后再把结果组合。

left = quickSort(left);
right = quickSort(right);
return [...left,baseData,...right];

完整代码

const r = [10,3,9,2,8,1,5,4,6,7];
  function quickSort(data){
    if(data.length <=1){
      return data;
    }
    let baseData = data.splice(0,1)[0];
    let left = [],
      right = [];
    for (const item of data){
      if(item > baseData){
        right.push(item );
      }else{
        left.push(item );
      }
    }
    left = quickSort(left);
    right = quickSort(right);
    return [...left,baseData,...right];
  }
  console.log(quickSort(r));

`