Java 如何将两个已排序数组 a(1, 7, 9, 11, 13, 15, 17, 19) 和 b(2, 4, 6, 8, 10) 合并为一个新的数组 c,并按照升序排列?
时间: 2024-12-26 17:28:20 浏览: 6
在Java中,你可以通过合并两个已排序的数组来创建一个新的有序数组。这里我们可以使用双指针法(Two Pointers Technique),结合数组的特点来进行操作。以下是实现这一过程的一个示例:
```java
int[] a = {1, 7, 9, 11, 13, 15, 17, 19};
int[] b = {2, 4, 6, 8, 10};
// 初始化新数组c的大小为a和b的长度之和
int[] c = new int[a.length + b.length];
// 双指针i和j分别指向数组a和b的起始位置,初始化为0
int i = 0, j = 0;
// 按照升序合并数组
while (i < a.length && j < b.length) {
// 如果a的元素小于b的元素,将a的元素放入c,并移动指针i
if (a[i] < b[j]) {
c[i++] = a[i];
} else {
// 否则,将b的元素放入c,并移动指针j
c[j++] = b[j];
}
}
// 处理剩余未加入c的元素
while (i < a.length) {
c[j++] = a[i++];
}
while (j < b.length) {
c[j++] = b[j - 1]; // 注意:b数组已经遍历完了,所以从后往前取
}
// 新数组c现在按升序排列
System.out.println(Arrays.toString(c)); // 输出:[1, 2, 4, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19]
```
阅读全文