1.4合并两个已排序的表(MERGE)

最近在学习算法的时候,老师让我们实现ButtomUpSort算法,然后实现的时候发现在ButtomUpSort算法中调用MERGE算法中带入了三个参数i+1,i+s,i+t,忽然就被看懵了,然后想了想逐步拆解ButtomUpSort算法,所以写了如下MERGE算法实现

具体代码如下:

/**
 * @author Sheye
 * @date 2019-09-17 20:19
 */
public class Merge {
    public static void main(String[] args) {
        int[] A = {15,17,19,23,24,16,18,19,20};
        int[] B = new int[9];
        int k=0;
        int p=0;
        int q=4;
        int r=A.length-1;
        int s=p;
        int t=q+1;
        while ((s<=q)&&(t<=r)){
            if (A[s]<=A[t]){
                B[k]=A[s];
                s=s+1;
            }else {
                B[k]=A[t];
                t=t+1;
            }
            k=k+1;
        }
        if (s==q+1){
            /**
             * src - 源数组。
             * srcPos - 源数组中的起始位置。
             * dest - 目标数组。
             * destPos - 目的地数据中的起始位置。
             * length - 要复制的数组元素的数量。
             */
            System.arraycopy(A,r,B,k,(t-r)+1);  //B[r-k]=A[r-t];

        }else {
            System.arraycopy(A,s,B,k,(q-s)+1);  //B[r-k]=A[q-s];
        }
        System.arraycopy(B,p,A,p,(r-p)+1);  //A[r-p]=B[r-p];
        for (int i=0;i<9;i++){
            System.out.print(" "+B[i]);
        }

    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值