const swap = (arr, i, j) => {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
};
const partition = (arr, low, high) => {
const pivot = arr[high];
let i = low;
for (let j = low; j < high; j++) {
if (arr[j] <= pivot) {
swap(arr, i, j);
i++;
}
}
swap(arr, i, high);
return i;
};
const quickSelect = (arr, k, low, high) => {
if (low === high) {
return arr[low];
}
const pivotIndex = partition(arr, low, high);
console.log(arr);
if (k === pivotIndex) {
return arr[pivotIndex];
} else if (k < pivotIndex) {
return quickSelect(arr, k, low, pivotIndex - 1);
} else {
return quickSelect(arr, k, pivotIndex + 1, high);
}
};
const findKthLargest = (arr, k) => {
const kthSmallestIndex = arr.length - k-1;
return quickSelect(arr, kthSmallestIndex, 0, arr.length - 1);
};
const arr = [11, 8, 3, 9, 7, 1, 2, 5];
const k = 4;
const result = findKthLargest(arr, k);
console.log(result);