一个非常简单的版本,没有实现找中位数,直接将第一个元素作为枢纽元素
function partion(arr, l, r) {
let i = l + 1 // 将第一个元素作为枢纽元素
let j = r
if (l >= r) return
while (i < j) {
while (arr[i] < arr[l] && i < r) {
i++
}
while (arr[j] > arr[l] && j > l) {
j--
}
if (i >= j) break
swap(arr, i, j)
i++
j--
}
swap(arr, j, l) // 交换完之后j<i
partion(arr, l, j - 1);
partion(arr, j + 1, r);
}
function swap(arr, i, j) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
// 今天手撕的时候,漏掉了i++ j--