首页 > 代码库 > log(n)时间内找出数组第i小的数字

log(n)时间内找出数组第i小的数字

参考算法导论9.2

R_Select(int *a,int p,int r,int i){
    if(p==r)
        return a[p];
    int q=partition(a,p,r);
    int k=q-p;
    if(i==k)
        return a[q];
    else if(i<k)
        return R_Select(a,p,q-1,i);
    else
        return R_Select(a,q+1,r,i-k);
}