快速排序


int Partition(int *A,int low,int hight){
     int key=A[low];
     while(low<high){
              while(low<high&&A[high]>=key)  
                       --high;
               swap(A[low],A[high]);
               while(low<high&&A[low]<=key)  
                       ++low;
                swap(A[low],A[high]);
                A[low]=key;
        return low;
}
int minI(int i,int *A,int m,int n)
{
      int p=Partition(A,m,n);
      if(p==i)  return A[p];
      if(p>i)     return minI(i,*A,m,p);
      if(p<i)     return minI(i-p,*A,p,n);
}


運用快排思想,設計遞歸算法實現求n個不同元素集合中第i小的元素。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章