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))