快速排序的算法實現

  1. void exch(int *p,int *q)  //Data Exchange 
  2.     int temp; 
  3.     temp = *p; 
  4.     *p = *q; 
  5.     *q = temp;       
  6.  
  7. int partition(int *a,int left,int right)    //Data Partition 
  8.     int i = left-1; 
  9.     int j = right; 
  10.     int tag = a[right]; 
  11.      
  12.     while(1) 
  13.     { 
  14.         while(tag >= a[++i]) 
  15.             ; 
  16.         while(tag <= a[--j]) 
  17.             if(j == left) 
  18.                 break
  19.         if(i >= j) 
  20.             break
  21.         exch(&a[i],&a[j]); 
  22.     } 
  23.     exch(&a[i],&a[right]); 
  24.     return i; 
  25.  
  26. void quick_sort(int *a,int left,int right) 
  27.     if(right <= left) return
  28.     int pos = partition(a,left,right); 
  29.     quick_sort(a,left,pos-1); 
  30.     quick_sort(a,pos+1,right); 

 

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