// 快速排序
public class QuickSort {
public static void main(String[] args) {
int[] c = { 4, 9, 23, 1, 45, 27, 5, 2 };
quickSort(c, 0, c.length-1);
for(int i:c){
System.out.println(i);
}
}
private static int sortUnit(int[] array, int low, int high){
int key = array[low];
while (low < high){
//从后向前搜索比key小的值
while (array[high] >= key && high > low)
--high;
//比key小的放左边
array[low] = array[high];
//从前向后搜索比key大的值,比key大的放右边
while (array[low] <= key && high > low)
++low;
//比key大的放右边
array[high] = array[low];
}
//左边都比key小,右边都比key大。将key放在游标当前位置。此时low等于high
array[high] = key;
return high;
}
public static void quickSort(int[] array, int low, int high) {
if (low >= high) return;
//完成一次单元排序
int index = sortUnit(array, low, high);
//对左边单元进行排序
quickSort(array, low, index - 1);
//对右边单元进行排序 .
quickSort(array, index + 1, high);
}
}