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));
        
    }

}


运行结果:

猜你喜欢

转载自blog.csdn.net/qq_52135683/article/details/121867516