不多BB,直接上代码:
#include <iostream>
using namespace std;
int getNthMaxByQuickSort(int array[], int low, int high, int k) {
if (low>high)
return -1;
int left = low;
int right = high;
int key = array[left];
while (left<right) {
while (right>left&&array[right] <= key)
--right;
array[left] = array[right];
while (left<right&&array[left] >= key)
++left;
array[right] = array[left];
}
array[left] = key;
if (left + 1 == k)
return array[left];
if (left + 1>k)
getNthMaxByQuickSort(array, low, left - 1, k);
else
getNthMaxByQuickSort(array, left + 1, high, k);
}
int main() {
int array[] = { 1,1,5,9,2,3,6,8,7,4,0 };
cout << getNthMaxByQuickSort(array, 0, 10, 1) << endl;
cin.get();
}