let tests = [3, 2, 2, 1, 4, 5, 6, 11, 8, 9, 7, 10];
function quickSelect(arr, k) {
if (arr.length <= 1) {
return arr[0];
}
let partition = arr[0];
let left = [];
let right = [];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < partition) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
if (left.length === k - 1) {
return partition;
}
if (left.length >= k) {
return quickSelect(left, k);
}
return quickSelect(right, k - left.length - 1);
}
let k = 9;
let kthLargest = quickSelect(tests, k);
console.log(`第 ${k} 大的值是: ${kthLargest}`);