小言_互联网的博客

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

469人阅读  评论(0)

最近在学习算法的时候,老师让我们实现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]);
        }

    }
    }


转载:https://blog.csdn.net/u014120081/article/details/100941042
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场