原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对两部分数据进行快速排序,整个排序过程可以递归进行,以此达到整个数据标称有序序列
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] intArray = {3,5,9,1,5,6,4,8};
quickSortW(intArray,0,intArray.length,-1);
for (int i = 0; i < intArray.length; i++) {
System.out.println(intArray[i]);
}
}
static void quickSortW(int[] intArray,int low,int high,int middle){
if(low < middle){
int mBmiddle = quickSort(intArray, low, middle+1);
quickSortW(intArray, low, middle+1, mBmiddle);
}
if(middle != 0 && middle < high){
if(middle == -1){
middle = 0;
}else{
middle++;
}
int mAmiddle = quickSort(intArray, middle, high);
quickSortW(intArray, middle, high, mAmiddle);
}
}
static int quickSort(int[] intArray,int low,int high){
if(low < high){
int key = intArray[low];
int mLow = low;
for (int i = low; i < high; i++) {
if(mLow < high && intArray[i] < key){
mLow++;
int temp = intArray[i];
intArray[i] = intArray[mLow];
intArray[mLow] = temp;
}
}
int mTemp = intArray[mLow];
intArray[mLow] = key;
intArray[low] = mTemp;
return mLow;
}
return low;
}