快速排序

const arr = [6, 1, 2, 7, 9, 3, 4, 5, 10, 8];
const { length: len } = arr;
const base = arr[0];
const j = len - 1;
const i = 0;

function quickSort(left, right) {
  if (left > right) {
    return;
  }
  let i = left;
  let j = right;
  const base = arr[left];
  while (i != j) {
    while (arr[j] >= base && i < j) {
      // 如果比基数大,则继续往左找
      j--;
    }
    while (arr[i] <= base && i < j) {
      // 如果比基数小,则继续往右找
      i++;
    }
    if (i < j) {
      // 交换 i 和 j 的值的位置
      const temp = arr[j];
      arr[j] = arr[i];
      arr[i] = temp;
    }
  }
  // 将基数与当前值交换位置
  arr[left] = arr[i];
  arr[i] = base;
  // 递归,将基数左侧的数进行排序
  quickSort(left, i - 1);
  // 递归,将基数右侧的数进行排序
  quickSort(i + 1, right);
}
quickSort(i, j);
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Last Updated: 7/26/2019, 9:43:01 AM