将两个有序数组合并为一个新的有序数组(Java实现)

本文探讨了Java相对于C语言的优势,通过一个实例展示了Java如何通过更简洁的语法实现数组组合操作。作者强调了Java在代码组织上的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不可否认的是Java确实C语言方便许多,这种写法比我在C中的那种写法要好

代码如下:

public class Test {
    public static void main(String[] args) {
        int[] arr1={1,3,5,7,9};
        int[] arr2={2,4,6,};
        int[] arr3=Test.combin(arr1,arr2);
        for (int i:arr3
             ) {
            System.out.println(i);
        }


    }
    public static int[] combin(int[] arr1,int[] arr2){
        int[] arr3=new int[arr1.length+arr2.length];
        int n1=0,n2=0,n3=0;
        while (n1<arr1.length&&n2<arr2.length){
            arr3[n3++]=arr1[n1]<arr2[n2]?arr1[n1++]:arr2[n2++];
        }
        while (n1<arr1.length){
            arr3[n3++]=arr1[n1++];
        }
        while (n2<arr2.length){
            arr3[n3++]=arr2[n2++];
        }
        return arr3;
    }
}

以下是一个Java程序,用于将两个有序数组合并一个新的有序数组: ```java public class MergeSortedArrays { public static int[] merge(int[] arr1, int[] arr2) { int[] mergedArray = new int[arr1.length + arr2.length]; int i = 0, j = 0, k = 0; // 比较两个数组的元素,将较小的元素放入新数组 while (i < arr1.length && j < arr2.length) { if (arr1[i] < arr2[j]) { mergedArray[k++] = arr1[i++]; } else { mergedArray[k++] = arr2[j++]; } } // 将剩余的元素放入新数组 while (i < arr1.length) { mergedArray[k++] = arr1[i++]; } while (j < arr2.length) { mergedArray[k++] = arr2[j++]; } return mergedArray; } public static void main(String[] args) { int[] array1 = {1, 3, 5, 7}; int[] array2 = {2, 4, 6, 8}; int[] mergedArray = merge(array1, array2); System.out.println("合并后的有序数组:"); for (int num : mergedArray) { System.out.print(num + " "); } } } ``` 这个程序的工作原理如下: 1. 我们定义了一个 `merge` 方法,它接受两个有序数组作为参数。 2. 在 `merge` 方法中,我们首先创建一个新的数组,其长度为两个输入数组长度之和。 3. 我们使用三个指针 `i`, `j`, 和 `k` 分别用于遍历两个输入数组和新数组。 4. 我们比较两个数组当前元素,将较小的元素放入新数组,并移动相应的指针。 5. 当一个数组遍历完后,我们将另一个数组的剩余元素全部放入新数组。 6. 最后,方法返回合并后的有序数组。 7. 在 `main` 方法中,我们创建了两个示例有序数组,调用 `merge` 方法,然后打印结果。 这个程序能够有效地将两个有序数组合并一个新的一致数组,同时保持数组的有序性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值