java代码写输入两个已经有序的int数组,合并到一个新数组中,新数组中的元素要是有序的 输入示例:a= [1,3,4,5,6],b= [2,5,7,8,9],输出c=[1,2,3,4,5,5,6,7,8,9]注意:不可以使用类似 Arrays.sort(), List.sort() 这类成熟的排序api
时间: 2023-08-19 11:22:00 浏览: 73
java实现把两个有序数组合并到一个数组的实例
5星 · 资源好评率100%
以下是Java代码实现,使用双指针方法,将两个有序数组合并成一个有序数组:
```java
class Solution {
public int[] merge(int[] a, int[] b) {
int m = a.length, n = b.length;
int[] c = new int[m + n];
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (a[i] < b[j]) {
c[k++] = a[i++];
} else {
c[k++] = b[j++];
}
}
while (i < m) {
c[k++] = a[i++];
}
while (j < n) {
c[k++] = b[j++];
}
return c;
}
}
class Main {
public static void main(String[] args) {
Solution solution = new Solution();
int[] a = {1, 3, 4, 5, 6};
int[] b = {2, 5, 7, 8, 9};
int[] c = solution.merge(a, b);
System.out.println(Arrays.toString(c)); // [1, 2, 3, 4, 5, 5, 6, 7, 8, 9]
}
}
```
解释一下代码实现:
我们定义一个新数组 `c`,长度为两个有序数组 `a` 和 `b` 的长度之和。同时定义三个指针 `i`、`j` 和 `k`,分别指向数组 `a`、`b` 和 `c` 的当前位置。然后,我们使用双指针方法,将两个有序数组合并成一个有序数组。具体实现如下:
- 当 `a[i] < b[j]` 时,将 `a[i]` 加入 `c` 中,并将指针 `i` 向后移动一位。
- 当 `a[i] >= b[j]` 时,将 `b[j]` 加入 `c` 中,并将指针 `j` 向后移动一位。
- 循环直到其中一个指针到达数组末尾。
- 将另一个数组中剩余的元素加入 `c` 中。
- 返回合并后的新数组 `c`。
阅读全文