一般分如下步驟: 1)選擇一個樞紐元素(有很對選法,我的實現里采用去中間元素的簡單方法) 2)使用該樞紐元素分割數組,使得比該元素小的元素在它的左邊,比它大的在右邊。并把樞紐元素放在合適的位置。 3)根據樞紐元素最后確定的位置,把數組分成三部分,左邊的,右邊的,樞紐元素自己,對左邊的,右邊的分別遞歸調用快速排序算法即可。public static void quicksort(int stru[], int left, int right){ if(left<right){ int i=left,j=right; int X=stru[i]; int n=i; while(i<j){ while(X<stru[j]&&j>i){ j--; } stru[n]=stru[j]; n=j; while(X>stru[i]&&i<j){ i++; } stru[n]=stru[i]; n=i; } stru[i]=X; quicksort(stru,left,j-1); quicksort(stru,j+1,right); } }
|