function quickSort(target) {
if (target.length < 2) {
return target;
}
const pivot = target[0]
const left = []
const right = []
for (let i = 1; i < target.length; i++) {
const cur = target[i]
if (cur <= pivot) {
left.push(cur)
} else {
right.push(cur)
}
}
return [...quickSort(left), pivot, ...quickSort(right)]
}
const arr = [1, 3, 7, 2, 5]
console.log(quickSort(arr))
function quickSort(target, left = 0, right = target.length - 1) {
if (left >= right) {
return
}
const pivotIndex = partition(target, left, right)
quickSort(target, left, pivotIndex - 1)
quickSort(target, pivotIndex + 1, right)
return target
}
function partition(target, left, right) {
const lastNode = target[right]
let pivotIndex = left
for (let i = left; i < right; i++) {
if (target[i] < lastNode) {
[target[i], target[pivotIndex]] = [target[pivotIndex], target[i]]
pivotIndex++
}
}
[target[pivotIndex], target[right]] = [target[right], target[pivotIndex]]
return pivotIndex
}
const arr = [1, 3, 7, 2, 5]
console.log(quickSort(arr))