1.思想

(1)从一组数中选出一个基准值(可以是任意的数字)。

(2)从左往右依次寻找比该基准值大的数,从右往左找第一个比基准值小的数,将两者进行对调。

(3)直从左往右的数值下标大于等于从右往左的数值下标,一次循环停止。

(4)采用递归的方法处理左边的数据,递归的处理右边的数据,直到循环结束。

2.代码实现

function quickSort(arr, left = 0, right = arr.length - 1) {
  if (left >= right) return;
  var mid = arr[parseInt((left + right) / 2)], //枢纽选择的是中间的
    l = left,
    r = right;
  while (true) {
    while (arr[l] < mid) {
      l++;
    }
    while (arr[r] > mid) {
      r--;
    }
    if (l >= r) {
      break;
    }
    [arr[l], arr[r]] = [arr[r], arr[l]];
  }
  quickSort(arr, left, l - 1);
  quickSort(arr, l + 1, right);
  return arr;
}

 

posted on 2021-03-26 10:04  李起桉  阅读(84)  评论(0)    收藏  举报