快排找第k大模板

 1 int get_kth(int l,int r)
 2 {
 3     if (l==r)
 4         return a[r];
 5     int i=l,j=r,mid=a[(l+r)>>1];
 6     while (i<j)
 7     {
 8         while (a[i]<mid)
 9             i++;
10         while (a[j]>mid)
11             j--;
12         if (i<j)
13         {
14             swap(a[i],a[j]);
15             i++;
16             j--;
17         }
18     }
19    if (k<=j) return get_kth(l,j);
20    if (k>=i) return get_kth(i,r);
21 }

 

posted @ 2014-08-25 14:23  lzw4896s  阅读(155)  评论(0编辑  收藏  举报