算法:
方法partition(int[] list,int first,int last)
每次分割前确定一个中心位置pivot。大于pivot的放到pivot右边,小于pivot的放到pivot左边。
一直分割到所有pivot处理完毕。
public class QuickSortDemo { public QuickSortDemo() {} public static void main(String[] args) { int[] intList = {2,3,2,5,6,1,-2,3,14,12}; quickSort(intList,0,intList.length-1); for (int i:intList) { System.out.print(i + " "); } } public static void quickSort(int[] list, int first, int last) { if (last > first) { int pivotIndex = partition(list,first,last); quickSort(list,first,pivotIndex-1); quickSort(list,pivotIndex+1,last); } } public static int partition(int[] list, int first, int last) { int pivot = list[first]; int low = first+1; int high = last; while (low < high) { while (low <= high && list[low] <= pivot) low++; while (low <= high && list[high] >= pivot) high--; if (high > low) { int temp = list[high]; list[high] = list[low]; list[low] = temp; } } while (high > first && list[high] >= pivot) high--; if (pivot > list[high]) { list[first] = list[high]; list[high] = pivot; return high; } else return first; } }