快速排序C實現代碼

cm54 9年前發布 | 983 次閱讀 C/C++ 排序

    #include <stdio.h>

/*輸出*/  
void show(int [],int);  


void quickSort(int array[],int left,int right)  
{  

   if(left>right)  

          return;  


 /*取最左邊的值為pivot(基準)*/  
     int i=left,j=right,pivot=array[left];  


    while(i<j)  
    {  
         while( (i<j) && (pivot <= array[j]) )  
            j--;  
         if(i<j)  
            array[i++]=array[j];  

  while( (i<j) && (array[i] <= pivot) )  
             i++;  
         if(i<j)  
             array[j--]=array[i];  
 }  

     array[j]=pivot;/*也可以是 array[i]=piovt。因為此時i=j*/  

    quickSort(array,left,i-1);  
    quickSort(array,i+1,right);  
}  


void main()  
{  
 /*測試數據*/  
 //int array[]={4,3,9,0,8,5,7,1,6,2};   
 int array[]={9,8,7,6,5,4,3,2,1,0,123,22,34,22,56,76,345,221};  

 int LEN=sizeof(array)/sizeof(int);  

 printf("原始數組:\n");  
 show(array,LEN);  
 printf("\n-----\n");  

 quickSort(array,0,LEN-1);  

 printf("\n排序結果:\n");  
 show(array,LEN);  
}  

/*打印*/  
void show(int a[],int len)  
{  
 int i;  
 for(i=0;i<len;i++)  
  printf("%d ",a[i]);  
}  </pre> 


 本文由用戶 cm54 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!