public static void quickSort(int[] array,int start,int end){ if(start < end){ int r = partition(array,start,end); quickSort(array,start,r-1); quickSort(array,r+1,end); } } public static int partition(int[] array,int start,int end){ int x = array[end]; * 将数组划分为3段: * start~i:元素 <= x; * i~j: 元素 > x; * j~end:待处理的元素 */ int i = start - 1; for(int j = start; j < end; j++){ if(array[j] <= x){ swap(array,++i,j); } } swap(array,++i,end); return i; } public static void swap(int[] array,int i,int j){ if(i == j){return;} array[i] ^= array[j]; array[j] ^= array[i]; array[i] ^= array[j]; } public static void main(String[] args){ int[] array = new int[]{2,8,45,0,7,5,99}; quickSort(array,0,array.length-1); for(int i = 0 ;i<array.length ;i++){ System.out.println(array[i]); } }
|