function quickSort(arr) {
// 交换元素位置
function swap(arr, m, n) {
let temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
// 数组分区,左小右大
function partition(arr, head, tail) {
let storeIndex = head;
let pivot = arr[tail]; // 直接选最右边的元素为基准元素
for (let i = head; i < tail; i++) {
if (arr[i] < pivot) {
swap(arr, storeIndex, i);
storeIndex++; // 交换位置后,storeIndex 自增 1,代表下一个可能要交换的位置
}
}
swap(arr, tail, storeIndex); // 将基准元素放置到最后的正确位置上
return storeIndex;
}
function sort(arr, head, tail) {
if (head > tail) {
return;
}
let storeIndex = partition(arr, head, tail);
sort(arr, head, storeIndex - 1);
sort(arr, storeIndex + 1, tail);
}
sort(arr, 0, arr.length - 1);
return arr;
}
let arr1 = [1, 4, 5, 2, 7, 0]
console.log(quickSort(arr1))