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

如何在Java函数中合并两个排好序的数组?

发布时间:2023-07-04 08:24:02

在Java函数中合并两个排好序的数组可以使用双指针法。双指针法的基本思想是维护两个指针i和j,分别指向两个数组的开头,同时比较两个指针所指的元素,将较小的元素放入目标数组中,然后将该指针向后移动一位。接下来,再比较两个指针所指的元素,将较小的元素放入目标数组中,并将该指针向后移动一位。重复这个过程,直到遍历完两个数组。

下面是一个示例的Java代码实现:

public static int[] mergeArrays(int[] arr1, int[] arr2) {
    int n1 = arr1.length;
    int n2 = arr2.length;
    int[] mergedArray = new int[n1 + n2];

    int i = 0, j = 0, k = 0;
    while (i < n1 && j < n2) {
        if (arr1[i] <= arr2[j]) {
            mergedArray[k] = arr1[i];
            i++;
        } else {
            mergedArray[k] = arr2[j];
            j++;
        }
        k++;
    }

    while (i < n1) {
        mergedArray[k] = arr1[i];
        i++;
        k++;
    }

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

在这个函数中,我们首先计算出新数组的长度,并创建一个新的数组mergedArray。然后,我们使用两个指针ij分别指向两个数组的开头,并将一个新的指针k初始化为0,用于指示新数组中的位置。

接下来,我们使用一个循环来合并两个数组,当i小于n1j小于n2时,比较arr1[i]arr2[j]的值,将较小的值放入mergedArray[k],并将ij相应地增加1,以及k增加1。在比较和放置元素之后,我们继续循环,直到其中一个数组的元素已完全合并。

最后,可能还存在一个数组中还有剩余元素的情况,我们需要将剩余的元素逐个放入mergedArray中。

通过以上的实现,我们可以在Java函数中合并两个排好序的数组。