用js写一个快速排序算法

69 阅读1分钟

思路

1 我们定义了一个名为 quickSort 的函数,该函数接收一个数字数组作为参数,并返回一个排序后的数字数组。

2 我们检查数组的长度是否小于等于 1。如果是,则直接返回该数组,因为它已经是有序的。

3 我们选择数组的第一个元素作为枢纽,并创建两个空数组 leftright,用于存放比枢纽小和比枢纽大的元素。

4 我们遍历数组的剩余部分,将比枢纽小的元素放入 left 数组中,将比枢纽大的元素放入 right 数组中,然后对 leftright 数组分别递归调用快速排序函数,并将三个数组合并为一个新的数组并返回。

function quickSort(arr: number[]): number[] {
  if (arr.length <= 1) {
    return arr;
  }
  const pivot: number = arr[0];
  const left: number[] = [];
  const right: number[] = [];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return [...quickSort(left), pivot, ...quickSort(right)];
}