小白成长日记(10)--使用快速排序寻找乱序数组中的第k大的值(c++)

来源:互联网 发布:国寿资管 知乎 编辑:程序博客网 时间:2024/05/18 01:58

不多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();}
阅读全文
0 0
原创粉丝点击