思路
1 我们定义了一个名为 quickSort 的函数,该函数接收一个数字数组作为参数,并返回一个排序后的数字数组。
2 我们检查数组的长度是否小于等于 1。如果是,则直接返回该数组,因为它已经是有序的。
3 我们选择数组的第一个元素作为枢纽,并创建两个空数组 left 和 right,用于存放比枢纽小和比枢纽大的元素。
4 我们遍历数组的剩余部分,将比枢纽小的元素放入 left 数组中,将比枢纽大的元素放入 right 数组中,然后对 left 和 right 数组分别递归调用快速排序函数,并将三个数组合并为一个新的数组并返回。
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)];
}