package 归并排序; import java.util.Arrays; public class GB { public int[] px(int[] a,int l,int r){ if(l<r) {//如果长度大于等于2,分 int mid=(l+r)/2; px(a, l, mid); px(a, mid + 1, r);//向下递归点 zhi(a, l, mid, r);//治 } return a; } private void zhi(int[] a,int l,int mid,int r){ int[] t=new int[r-l+1];//临时数组长度为分之前的数组长度 int q=0; int i=l; int j=mid+1; while (i<=mid&&j<=r){//合并两个有序数组,直到其中一个走完 if(a[i]<=a[j]){ t[q++]=a[i++]; }else{ t[q++]=a[j++]; } } while(i<=mid){//两个循环其实只有一个人走,让没有走完的数组覆盖 t[q++]=a[i++]; } while(j<=r){ t[q++]=a[j++]; } System.out.println(Arrays.toString(t));//显示细节 for(int x=0;x<t.length;x++){//临时数组赋给原数组 a[l++]=t[x]; } } }
归并排序
最新推荐文章于 2024-10-01 11:11:49 发布