快速排序
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]