感覺《算法導論》上面的那個例子要更容易理解,因爲那個最起碼比較直觀!
#include <stdio.h> int a[10]={2,8,5,7,4,3,1,9,6,10}; void QuickSort(int m, int n) { int s,begin,end; if(m>n) return; begin=m; end=n; s=a[m]; while(begin!=end) { while(a[end]>=s && begin<end) end--; while(a[begin]<=s && begin<end) begin++; if(begin<end) { a[begin]=a[begin]^a[end]; a[end]=a[begin]^a[end]; a[begin]=a[begin]^a[end]; } } a[m]=a[begin]; a[begin]=s; for(int t=0;t<10;t++) printf("%d ",a[t]); printf("\n"); QuickSort(m,begin-1); QuickSort(end+1,n); } int main() { int i; for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n排序後\n"); QuickSort(0,9); printf("\n最終結果\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0; }
運行之後