java实现合并两个有序数组使其合并后的数组也有序

思路图:

代码:

public class Test {

    public static void main(String[] args) {
        int[]arr1= {1,2,3,4};
        int[]arr2= {5,6,7,8};
        merge(arr1,arr2);
    }

    private static void merge(int[] arr1, int[] arr2) {
        // 创建一个临时数组temp用于合并arr1和arr2,并用t指向temp的首元素
        int[]temp=new int[arr1.length+arr2.length];
        int t=0;
        //a1和a2分别指向arr1、arr2的首位置
        int a1=0;
        int a2=0;
        //每次比较arr1[a1]和arr2[a2]的大小,小的添加进temp(记得移动指针),当arr1或者arr2有一个添加完时,退出while循环
        while(a1<arr1.length&&a2<arr2.length) {
            if(arr1[a1]<arr2[a2]) {
                temp[t]=arr1[a1];
                t++;
                a1++;
            }
            else {
                temp[t]=arr2[a2];
                t++;
                a2++;
            }
        }
        //其中有数组没有添加完时,则依次添加进temp即可
        while(a1<arr1.length) {
            temp[t]=arr1[a1];
            t++;
            a1++;
        }
        while(a2<arr2.length) {
            temp[t]=arr2[a2];
            t++;
            a2++;
        }
        System.out.println(Arrays.toString(temp));
        
    }

}


运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值