#include <iostream>
using namespace std;
int partion(int arr[], int left, int right) {
if (left >= right) {
return left;
}
int i = left, j = right;
int tmp = arr[i];
while (i < j) {
while (i < j && arr[j] > tmp) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] < tmp) {
i++;
}
arr[j] = arr[i];
}
arr[i] = tmp;
return i;
}
int max_k(int arr[], int left, int right, int k) {
if (left >= right) {
return arr[left];
}
int pivot = partion(arr, left, right);
if (pivot == k-1) {
return arr[pivot];
} else if (pivot < k-1) {
return max_k(arr, pivot+1, right, k);
} else {
return max_k(arr, left, pivot-1, k);
}
}
int main() {
int arr[] = {2, 3, 1, 4, 4, 5};
cout << max_k(arr, 0, 5, 3) << endl;
}
数组中第 k 大的数字
最新推荐文章于 2023-08-13 19:12:59 发布