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 算法之快速排序
最新推荐文章于 2024-07-17 10:35:12 发布