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 算法 快速排序
猜你喜欢
转载自blog.csdn.net/liu15835467265liu/article/details/79678758
今日推荐
周排行