#include<iostream>voidquick_sort_kth(int q[], int l, int r, int k){
//递归的终止情况if (l >= r) return;
//第一步:分成子问题int i = l - 1, j = r + 1, x = q[l + r >> 1];
while (i < j)
{
do i++; while (q[i] < x);
do j--; while (q[j] > x);
if (i < j) std::swap(q[i], q[j]);
}
// 判断第 k 大的元素在哪个区间if (k <= j) {
quick_sort_kth(q, l, j, k);
} else {
quick_sort_kth(q, j + 1, r, k);
}
}
intmain(){
int arr[] = {12, 7, 11, 5, 6, 13, 6};
int n = sizeof(arr) / sizeof(int);
int k = 3; // 找第 3 大的数std::cout << "Original array: ";
for (int i : arr) {
std::cout << i << " ";
}
quick_sort_kth(arr, 0, n - 1, n - k);
std::cout << "\nSorted array: ";
for (int i : arr) {
std::cout << i << " ";
}
std::cout << "\nThe " << k << "th largest element is: " << arr[n - k] << std::endl;
return0;
}