快速排序的java实现

来源:互联网 发布:dlg分幅数据整合 编辑:程序博客网 时间:2024/05/23 02:05
```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+" ");}}```
0 0
原创粉丝点击