public static int partition(int []array,int lo,int hi){ //固定的切分方式 int key=array[lo]; while(lo<hi){ while(array[hi]>=key&&hi>lo){//從後半部分向前掃描 hi--; } array[lo]=array[hi]; while(array[lo]<=key&&hi>lo){//從前半部分向後掃描 lo++; } array[hi]=array[lo]; } array[hi]=key; return hi; } public static void sort(int[] array,int lo ,int hi){ if(lo>=hi){ return ; } int index=partition(array,lo,hi); sort(array,lo,index-1); sort(array,index+1,hi); } public static void main(String[] args) { int[] array = new int[]{9, 2, 4, 7, 5, 3, 2}; sort(array, 0, array.length-1); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } }
java 算法之快速排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.