``` public class Qsort { /*median-Kth number-Qsort *挖坑填补——用首尾下标移动实现分区(挨个比较及) *分而治之——即细分到两个数的交换 *5,3,7,1 *1,3,7,5 *1,3,5,7 * */ static void swap(int a[],int l,int r){ int temp; temp=a[l]; a[l]=a[r]; a[r]=temp; } static int arraySort(int a[],int l,int r){ int i,j,pivot; i=l;j=r;pivot=a[l]; while(i<j){ //加=号可能是一样的数字;用while及i<j,是为了 while(a[j]>=pivot&&i<j)j--; swap(a,i,j); //前后交换过程中,a[i]可能等于pivot,因为pivot是随着分区来移动位置的 while(a[i]<=pivot&&i<j)i++; swap(a,i,j); } return i; } static void qSort(int a[],int l,int r){ int i; if(l<r){ i=arraySort(a, l, r); qSort(a, l, i-1); qSort(a, i+1, r); } } public static void main(String[] args) { int a[]={5,3,7,1,5,8,7}; qSort(a, 0,a.length-1); for (int i : a) { System.out.print(i+" "); } } ```
快速排序的java实现
最新推荐文章于 2024-07-17 10:35:12 发布