欢迎访问宙启技术站
智能推送

编写一个Java函数来合并两个排序的数组。

发布时间:2023-11-10 00:04:54

以下是一个Java函数来合并两个排序的数组的实现:

public class MergeArrays {

    // 合并两个排序的数组
    public static int[] mergeSortedArrays(int[] arr1, int[] arr2) {
        int n1 = arr1.length;
        int n2 = arr2.length;

        // 创建一个新数组来存储合并后的结果
        int[] merged = new int[n1 + n2];

        int i = 0, j = 0, k = 0;

        // 比较两个数组的元素并按顺序将它们合并到新数组中
        while (i < n1 && j < n2) {
            if (arr1[i] <= arr2[j]) {
                merged[k++] = arr1[i++];
            } else {
                merged[k++] = arr2[j++];
            }
        }

        // 将剩余的元素添加到新数组中
        while (i < n1) {
            merged[k++] = arr1[i++];
        }

        while (j < n2) {
            merged[k++] = arr2[j++];
        }

        return merged;
    }

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

        int[] merged = mergeSortedArrays(arr1, arr2);

        System.out.println("合并后的数组:");
        for (int i = 0; i < merged.length; i++) {
            System.out.print(merged[i] + " ");
        }
    }
}

该函数接受两个已排序的整数数组作为输入,并返回一个将两个数组合并并排序的新数组。它使用了两个指针i和j来分别追踪arr1和arr2的当前位置,以及一个指针k来指示merged数组的当前位置。循环中,比较arr1[i]和arr2[j]的大小,将较小的元素写入merged数组,并相应地增加指针i或j。最后,将剩余的元素添加到merged数组中,并返回结果。

在main函数中,我们声明了两个已排序的数组arr1和arr2,并调用mergeSortedArrays函数来合并这两个数组。最后,我们通过循环打印合并后的数组的元素。