4、已知整型数组a和b的长度分别为M和N (M、N已知),且均已升序排序,编写程序将这两个有序数组合并成一个新的升序数组。 (提示:键盘输入数组元素时,已按升序顺序键入,无须再排序)
时间: 2024-12-14 15:18:19 浏览: 15
为了将两个有序数组 `a` 和 `b` 合并成一个新的有序数组,你可以采用双指针法,即创建一个新的数组 `c` 来存储合并后的结果,并维护两个指向当前处理位置的指针 i 和 j 分别对应于数组 `a` 和 `b`。以下是 Python 语言的一个简单示例:
```python
def merge_arrays(a, b):
# 初始化空数组c和两个指针i和j
c = []
i, j = 0, 0
# 比较两个数组中的元素直到其中一个遍历完
while i < len(a) and j < len(b):
if a[i] <= b[j]:
c.append(a[i])
i += 1
else:
c.append(b[j])
j += 1
# 把剩余未添加到c的元素追加到数组末尾
c.extend(a[i:])
c.extend(b[j:])
return c
# 示例
# 假设 a = [1, 3, 5, 7] 和 b = [2, 4, 6, 8]
merged_array = merge_arrays([1, 3, 5, 7], [2, 4, 6, 8])
print(merged_array)
# 输出: [1, 2, 3, 4, 5, 6, 7, 8]
相关问题
已知整型数组a和b的长度分别为 M 和N(M、N 已知),且均已升序排序,编写程序格这两个有序数组合并成一个新的升序数组。
要将两个已排序的整型数组 `a` 和 `b` 合并成一个新的升序数组,可以使用双指针法,分别从两个数组的开头开始比较元素。以下是Python的一个示例:
```python
def merge_sorted_arrays(a, b):
# 初始化空结果数组c
result = []
# 指针i指向a的第一个元素,j指向b的第一个元素
i = 0
j = 0
# 当任一数组还有剩余元素时
while i < len(a) and j < len(b):
# 如果a的当前元素小于b的当前元素,则添加到结果,并移动a指针
if a[i] <= b[j]:
result.append(a[i])
i += 1
# 否则,添加b的当前元素到结果,并移动b指针
else:
result.append(b[j])
j += 1
# 将剩余的数组元素添加到结果(如果有的话)
result.extend(a[i:])
result.extend(b[j:])
return result
# 示例
M = 5 # a数组长度
N = 3 # b数组长度
a = [1, 3, 5, 7, 9]
b = [2, 4, 6]
merged_array = merge_sorted_arrays(a, b)
print(merged_array) # 输出: [1, 2, 3, 4, 5, 6, 7, 9]
```
已知整型数组a和 的长度分别为M和N(M、N已知),且均已升序排序,编写程序将这两个有序数组合并成一个新的升序数组。 (提示:键盘输入数组元素时,已按升序顺序键入,无须再排序)
合并两个升序排序的整数数组可以使用双指针技巧。创建一个新数组c,初始化长度为M+N。设两个指针i和j分别指向a和b的起始位置。
以下是Python语言的一个简单示例:
```python
def merge_arrays(a, b):
i = 0
j = 0
c = [] # 新数组
while i < len(a) and j < len(b): # 当两个数组还有未遍历元素
if a[i] <= b[j]: # 如果a的当前元素小于等于b的当前元素
c.append(a[i]) # 把a的当前元素添加到新数组
i += 1 # 移动a的指针
else: # 否则
c.append(b[j]) # 把b的当前元素添加到新数组
j += 1 # 移动b的指针
# 如果a还有剩余元素,直接添加
while i < len(a):
c.append(a[i])
i += 1
# 如果b还有剩余元素,也添加
while j < len(b):
c.append(b[j])
j += 1
return c
# 示例
a = [1, 3, 5]
b = [2, 4, 6]
merged_array = merge_arrays(a, b)
print(merged_array) # 输出:[1, 2, 3, 4, 5, 6]
```
阅读全文