归并排序自顶向下

public static void MergeSortDC(int[] R,int low,int high)
     {//用分治法对R[low..high]进行二路归并排序
       int mid;
       if(low < high && low != high - 1){//区间长度大于1
          mid= (low+high)/2 ; //分解
          MergeSortDC(R, low, mid);//递归地对R[low..mid)排序 
          MergeSortDC(R, mid, high); //递归地对R[mid..high]排序
          Merge(R,low,mid,high); //组合,将两个有序区归并为一个有序区
        }
     }//MergeSortD

	public static void Merge(int[] r,int low,int mid,int high){
		int tLength = high - low ;
		System.out.println(high+"\t"+low +"\t" + mid);
		int[] c = new int[tLength];
		int aI = low, bI = mid,tI = 0; 
		while(aI < mid  && bI < high){
			c[tI++] = (r[aI] >= r[bI]) ? r[aI++] : r[bI++];
		}
		
		while(aI < mid){
			c[tI++] = r[aI++];
		}

		while(bI < high){
			c[tI++] = r[bI++];
		}
		 System.out.println(Arrays.toString(c));
		for(int i =0 ; i < c.length; i++){
			r[low++] = c[i];
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值