合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
时间: 2023-05-19 19:02:01 浏览: 95
可以使用归并排序的思想,从两个数组的开头开始比较,将较小的数放入新数组中,直到其中一个数组被遍历完,然后将另一个数组中剩余的数依次放入新数组中即可。以下是示例代码:
```
def merge_sorted_arrays(A, B):
i, j = 0, 0
new_array = []
while i < len(A) and j < len(B):
if A[i] < B[j]:
new_array.append(A[i])
i += 1
else:
new_array.append(B[j])
j += 1
if i < len(A):
new_array.extend(A[i:])
if j < len(B):
new_array.extend(B[j:])
return new_array
```
对于输入为 A=[1, 3, 5, 7, 9] 和 B=[2, 4, 6, 8, 10] 的情况,输出为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。
相关问题
js合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
可以使用双指针的方法,分别从数组A和数组B的开头开始比较,将较小的数放入新数组中,直到其中一个数组遍历完毕,然后将另一个数组中剩余的数依次放入新数组中即可。具体实现如下:
function mergeSortedArrays(A, B) {
let i = 0, j = 0;
const result = [];
while (i < A.length && j < B.length) {
if (A[i] < B[j]) {
result.push(A[i]);
i++;
} else {
result.push(B[j]);
j++;
}
}
while (i < A.length) {
result.push(A[i]);
i++;
}
while (j < B.length) {
result.push(B[j]);
j++;
}
return result;
}
const A = [1, 3, 5, 7];
const B = [2, 4, 6, 8];
const C = mergeSortedArrays(A, B);
console.log(C); // [1, 2, 3, 4, 5, 6, 7, 8]
编程:给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
:可以使用双指针的方法,从后向前遍历 A 和 B 数组,将较大的元素依次放进数组 A 的最后面,直到将数组 B 全部合并到数组 A 中为止。具体代码如下:
```python
def merge(A, m, B, n):
p1, p2, p = m - 1, n - 1, m + n - 1 # 双指针,p1 指向数组 A 的末尾,p2 指向数组 B 的末尾,p 指向合并后的数组 A 的末尾
while p1 >= 0 and p2 >= 0: # 当 A 数组和 B 数组都有元素时,比较两个指针指向的元素大小
if A[p1] > B[p2]:
A[p] = A[p1]
p1 -= 1
else:
A[p] = B[p2]
p2 -= 1
p -= 1 # 移动指针 p,指向下一次合并后的位置
if p2 >= 0: # 如果 B 数组还有剩余元素,将其直接拷贝到 A 数组
A[:p2 + 1] = B[:p2 + 1]
```
其中,m 和 n 分别为 A 数组和 B 数组的长度。
阅读全文