int select(int[] values, int k) {
int left = 0;
int right = values.length - 1;
while (left <= right) {
int pivot = partition(values, left, right);
if (pivot == k) return values[pivot];
if (pivot < k) left = pivot + 1;
else right = pivot - 1;
}
return -1;
}
def select(values: list[int], k: int) -> int:
left, right = 0, len(values) - 1
while left <= right:
pivot = partition(values, left, right)
if pivot == k:
return values[pivot]
if pivot < k:
left = pivot + 1
else:
right = pivot - 1
return -1
def select(values: Array[Int], k: Int): Int =
var left = 0
var right = values.length - 1
while left <= right do
val pivot = partition(values, left, right)
if pivot == k then return values(pivot)
if pivot < k then left = pivot + 1
else right = pivot - 1
-1
int select(std::vector<int>& values, int k) {
int left = 0, right = static_cast<int>(values.size()) - 1;
while (left <= right) {
int pivot = partition(values, left, right);
if (pivot == k) return values[pivot];
if (pivot < k) left = pivot + 1;
else right = pivot - 1;
}
return -1;
}