void QuickSort(int a[],int low,int high); //對a[low]到a[high]由小到大排序
void QuickSort(int a[],int low,int high) { int pivot; int i=low,j=high; if(low<high){ pivot = a[low]; //將第一個元素作為樞軸 //接下來進行第一次partition
while(i<j){ while(i<j && a[j]>=pivot) //從右往左找到第一個小於樞軸的數
j--; if(i<j){ //將該數移動到左指針的位置
a[i] = a[j]; i++; } while(i<j && a[i]<pivot) //從左往右找到第一個大於等於樞軸的數
i++; if(i<j){ //將該數移動到右指針的位置
a[j] = a[i]; j--; } } a[i] = pivot; //循環退出時i == j即樞軸的位置 //遞歸處理當前樞軸的左右兩部分
QuickSort(a,low,i-1); QuickSort(a,i+1,high); } } /* 算法分析: time-complexity: 最好情況下時間復雜度為O(nlog2n),待排序列接近無序,算法效率越高。 最壞情況下時間復雜度為O(n2),待排序列月接近有序,算法效率越低。 平均情況下時間復雜度為O(nlog2n); space-complexity O(log2n) *