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