void swap(int *c, int* d){
int e;
e = *c;
*c = *d;
*d = e;
}
intpartition(int a[],int p,int r){
int x,i,j;
x = a[r];
i = p - 1;
for(j=p; j<=r-1; j++){
if(a[j] < x){
i++;
swap(&a[i],&a[j]);
}
}
swap(&a[i+1],&a[r]);
return i+1;
}
int q_select(int a[], intp, int r, int i){
if(p== r){
returna[p];
}
int q = partition(a,p,r);
int k = r-q+1;
if(i == k){
returna[q];
}else{
if( i< k){
returnq_select(a,q+1,r,i);
}else{
return q_select(a,p,q-1,i-k);
}
}
}