随机选择算法
int randselect(int* a,int l,int r,int X){
if(l==r) return a[l];
int p=randPartition(int* a,int l,int r);
int M=p-l+1;
if(X==M){
return a[p];
}
else if(X<M){
return randselect(int* a,int l,int p-1,int X);
}
else{
return randselect(int* a,int p+1,int r,int X-M);
}
}
if(l==r) return a[l];
int p=randPartition(int* a,int l,int r);
int M=p-l+1;
if(X==M){
return a[p];
}
else if(X<M){
return randselect(int* a,int l,int p-1,int X);
}
else{
return randselect(int* a,int p+1,int r,int X-M);
}
}