找出第K大的数

来源:互联网 发布:网络商店需要哪些手续 编辑:程序博客网 时间:2024/05/01 11:43
#include<iostream>using namespace std;int partition(int a[],int left,int right){    const int pivot= a[left];    while(left < right)    {        while(left < right && a[right]>=pivot) right--;        a[left]=a[right];        while(left < right && a[left]<=pivot) left++;        a[right]=a[left];    }    a[left]=pivot;    return left;}int findKth(int a[],int left,int right,const int k){    //from 1 begin    int ret=0;    while((ret=partition(a,left,right))!=(k-1))    {        if(ret < k-1) { left=ret+1;}        if(ret > k-1) { right=ret-1;}    }    return ret;}int main(){    int a[]={5,2,1,3,6,9,8,7,4};      int len=(sizeof(a)/sizeof(*a));    cout<<a[findKth(a,0,len-1,5)]<<endl<<endl;    for(int i=0;i!=len;i++)    {        cout<<a[i]<<endl;    }    return 0;}

0 0
原创粉丝点击