合并两个有序数组python
时间: 2023-09-05 19:13:05 浏览: 96
好的,以下是合并两个有序数组的Python代码示例:
```python
def merge_arrays(arr1, arr2):
# 创建一个新的空数组存储合并后的结果
result = []
# 定义两个指针分别指向arr1和arr2的开头
i = 0
j = 0
# 按顺序比较arr1和arr2中的元素,并将较小的添加到result数组中
while i < len(arr1) and j < len(arr2):
if arr1[i] < arr2[j]:
result.append(arr1[i])
i += 1
else:
result.append(arr2[j])
j += 1
# 将剩余的元素添加到结果数组中
result += arr1[i:]
result += arr2[j:]
# 返回合并后的结果数组
return result
```
以上代码中,我们定义了`merge_arrays`函数来合并两个有序的数组。我们会创建一个新的空数组来存储合并后的结果,并且利用两个指针`i`和`j`分别指向两个数组的开头。我们通过比较`arr1[i]`和`arr2[j]`来找到较小的值,并将其添加到结果数组中。然后,我们可以将剩余的元素添加到结果数组中,最后返回合并后的结果数组。
希望我的回答对你有所帮助!
相关问题
使用python合并两个有序数组
你可以使用以下方法来合并两个有序数组:
```python
def merge_sorted_arrays(arr1, arr2):
merged = []
i = j = 0
while i < len(arr1) and j < len(arr2):
if arr1[i] <= arr2[j]:
merged.append(arr1[i])
i += 1
else:
merged.append(arr2[j])
j += 1
while i < len(arr1):
merged.append(arr1[i])
i += 1
while j < len(arr2):
merged.append(arr2[j])
j += 1
return merged
```
使用该函数,你可以将两个有序数组 `arr1` 和 `arr2` 合并为一个新的有序数组 `merged`。请注意,该函数假设输入的两个数组已经按升序排列。
例如,`arr1 = [1, 3, 5]` 和 `arr2 = [2, 4, 6]`,调用 `merge_sorted_arrays(arr1, arr2)` 将返回 `[1, 2, 3, 4, 5, 6]`。
合并两个有序数组时间复杂度
合并两个已排序的数组通常是指将这两个数组合并成一个新的有序数组。最简单直接的方法是采用双指针法,即分别从两个数组的开头开始比较,将较小的元素放入新的数组,直到其中一个数组遍历完。这种方法的时间复杂度是O(n),其中n是两个数组元素的总数。这是因为每个元素都会被访问一次。
以下是Python示例代码:
```python
def merge_sorted_arrays(arr1, arr2):
merged = []
i = j = 0
while i < len(arr1) and j < len(arr2):
if arr1[i] <= arr2[j]:
merged.append(arr1[i])
i += 1
else:
merged.append(arr2[j])
j += 1
# 把剩余未添加到结果的元素全部加进去
merged.extend(arr1[i:])
merged.extend(arr2[j:])
return merged
```
阅读全文