编写一个程序,将两个已按升序排列的整数数组 A 和 B 合并成一个新的有序数组。请完成以下函数,假设输入数组 A 和 B 分别为 int[] A 和 int[] B,目标是返回一个新的合并数组(可以与原数组共享内存)。
时间: 2024-10-20 08:14:15 浏览: 32
编写一个合并两个已排序整数数组的程序,通常会采用双指针法。这里是一个简单的 Java 示例:
```java
public int[] mergeSortedArrays(int[] A, int[] B) {
int lenA = A.length;
int lenB = B.length;
int[] mergedArray = new int[lenA + lenB]; // 新建一个足够大的数组来存储结果
// 定义两个指针,分别指向 A 和 B 的起始位置
int i = 0, j = 0, k = 0;
// 比较两个数组的元素并按顺序添加到新数组
while (i < lenA && j < lenB) {
if (A[i] <= B[j]) { // 如果 A 的当前元素小于等于 B
mergedArray[k++] = A[i++]; // 将 A 的元素添加到新数组,并移动指针
} else {
mergedArray[k++] = B[j++]; // 否则,将 B 的元素添加到新数组,并移动指针
}
}
// 如果 A 还有剩余元素,直接复制过来
while (i < lenA) {
mergedArray[k++] = A[i++];
}
// 如果 B 还有剩余元素,也复制过去
while (j < lenB) {
mergedArray[k++] = B[j++];
}
return mergedArray; // 返回合并后的有序数组
}
```
阅读全文