快排,查找第K大的数

快排

 1 int partition(int A[],int n,int p,int q){
 2     int i=p;
 3     for(int j=p+1;j<=q;j++){
 4         if(A[j]<=A[p]){
 5             i++;
 6             swap(A[i],A[j]);
 7         }
 8     }
 9     swap(A[i],A[p]);
10     return i;
11 }
12 //
13 
14 void quickSort(int A[],int n,int p,int q){
15     if(q<p) return;
16     int r=partition(A,n,p,q);
17     quickSort(A,n,p,r-1);
18     quickSort(A,n,r+1,q);
19  }

快排用于选择第K大的数,平均时间复杂度O(n),最坏O(n^2)

 

posted @ 2014-09-10 11:55  liuzhiminxd  阅读(146)  评论(0编辑  收藏  举报