一般分如下步骤: 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); } }
|