快速排序法:
public class Main { public static void main(String[] args) { int a[]={7,8,1,3,5}; new Main(a); } public Main(int[] a){ System.out.println("排序前:"); print(a); quickSort(a,0,a.length-1); System.out.println(); System.out.println("排序后:"); print(a); } public int getMiddle(int[] list,int low,int high){ int temp=list[low];//数组的第一个作为中轴 while(low<high){ while(low < high && list[high]>=temp) high--; list[low]=list[high];//比中轴小的数移到低端 while(low < high && list[low]<=temp) low++; list[high]=list[low];//比中轴大的移动到高端 } list[low]=temp;//中轴记录到为尾 // System.out.println("low==high? "+(low==high)+"low= "+low+"high= "+high); return low;//返回中轴位置 //判断得知,最后三个中轴为3 2 0 } public void quickSort(int a[],int low,int high){ if(low<high){ int middle=getMiddle(a, low, high);//将数组a一分为二 quickSort(a, low, middle-1);//对小于中轴的部分递归排序 quickSort(a, middle+1, high);//对大于中轴的部分递归排序 } } void print(int []a){ for(int s: a) System.out.print(s+" , "); } }
本算法应做到信手拈来。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-07 05:34:54