第n大的元素

#include <bits/stdc++.h>
using namespace std;
//利用快速排序的思路,每次都有选择的在左边或右边递归。
//[,]
// int a[6]={1,2,2,3,5,5};
int a[6]={2,1,2,5,3,5};
int nth(int n,int x,int y){
    int i=x,j=y;
    while(i<j){
        while(i<j&&a[j]>=a[i]) j--;
        if(i<j) swap(a[i],a[j]);
        while(i<j&&a[i]<=a[j]) i++;
        if(i<j) swap(a[i],a[j]); 
    }
    if(i+1==n) return a[i];
    else if(i+1<n) return nth(n,i+1,y);
    else return nth(n,x,i-1);
}
int main()
{   
    cout<<nth(1,0,5)<<nth(2,0,5)<<nth(3,0,5)<<nth(4,0,5)<<nth(5,0,5)<<nth(6,0,5)<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/MorrowWind/p/13056490.html