package com.wen.util; /** * @author jack0511 * */ public class QuickSort { int num = 0; public void sort(int[] array, int i, int j) throws Exception { num++; System.out.println("一趟排序开始"); int beginIndex = i; int endIndex = j; System.out.println("BeingIndex EndIndex:" + beginIndex + " " + endIndex); if (array == null || array.length == 0) { throw new Exception("Error Argument"); } printArray(array); int key = array[i];//哨兵位 System.out.println("KEY:" + key); int temp = 0; for (; i != j;) { System.out.println("i j开始位置:" + i + " " + j); for (; j > i; j--) { if (array[j] < key) { temp = array[j]; array[j] = array[i]; array[i] = temp; break; } } for (; i < j; i++) { if (array[i] > key) { temp = array[i]; array[i] = array[j]; array[j] = temp; break; } } System.out.println("i j结束位置:" + i + " " + j); printArray(array); } System.out.println("一趟排序结束"); if (i != beginIndex) { this.sort(array, beginIndex, i - 1); } if (j != endIndex) { this.sort(array, j + 1, endIndex); } } public static void printArray(int[] array) { for (int e : array) { System.out.print(e); System.out.print(" "); } System.out.println(); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub QuickSort qs = new QuickSort(); int[] array = new int[] { 6, 3, 5, 23, 2, 7, 9, 10, 20, 88, 26, 12, 13, 1, 11 }; try { qs.sort(array, 0, array.length - 1); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("递归次数:" + qs.num); } }