编写一个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函数来合并这两个数组。最后,我们通过循环打印合并后的数组的元素。
