第k大的数

来源:互联网 发布:飞星排盘软件 编辑:程序博客网 时间:2024/04/30 15:56
#include"iostream"#include"cstdio"using namespace std;int select(int *a,int b,int e,int k){if(b==e) return a[b];int x=a[b+rand()%(e-b+1)],i=b,j=e;while(i<j){while(a[++i]<x);while(a[--j]>x);if(i<j) swap(a[i],a[j]);}if(j==e) j--;i=j-b+1;if(k<=i) return select(a,b,j,k);else return select(a,j+1,e,k-i);}int main(){int a[4]={1,3,2,4};cout<<select(a,0,3,3);return 0;}

0 0
原创粉丝点击