合并两个有序数组python
时间: 2023-09-04 16:15:06 浏览: 39
可以使用双指针法,从数组末尾开始遍历比较大小,将较大的元素放到目标数组的末尾。
代码如下:
```
def merge(nums1, m, nums2, n):
i, j = m - 1, n - 1
k = m + n - 1
while i >= 0 and j >= 0:
if nums1[i] > nums2[j]:
nums1[k] = nums1[i]
i -= 1
else:
nums1[k] = nums2[j]
j -= 1
k -= 1
while j >= 0:
nums1[k] = nums2[j]
j -= 1
k -= 1
```
其中,i、j分别是两个数组的指针,k是目标数组的指针。第一个while循环中,如果nums1[i]大于nums2[j],将nums1[i]放到目标数组的末尾,i指针向前移动;否则,将nums2[j]放到目标数组的末尾,j指针向前移动。第二个while循环中,如果nums2还有剩余元素,将其全部放到目标数组的末尾。最后,目标数组就是合并后的有序数组。
相关问题
使用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]`。
6-4 合并两个有序数组
要将两个有序数组合并为一个有序数组,可以使用双指针的方法。假设两个数组分别为A和B,且长度分别为m和n。
首先,创建一个新的数组C,长度为m+n。然后,使用两个指针分别指向数组A和数组B的开头,比较两个指针指向的值,将较小的值放入数组C,并将相应的指针后移一位。重复这个过程,直到其中一个数组的所有元素都放入了数组C。
如果其中一个数组的元素已经全部放入了数组C,而另一个数组还有剩余元素,直接将剩余元素放入数组C即可。
下面是使用Python实现的代码示例:
```python
def mergeArrays(A, B):
# 获取两个数组的长度
m, n = len(A), len(B)
# 创建一个新的数组C
C = [0] * (m + n)
# 双指针
i, j, k = 0, 0, 0
# 比较两个指针指向的值,将较小的值放入数组C
while i < m and j < n:
if A[i] <= B[j]:
C[k] = A[i]
i += 1
else:
C[k] = B[j]
j += 1
k += 1
# 将剩余元素放入数组C
while i < m:
C[k] = A[i]
i += 1
k += 1
while j < n:
C[k] = B[j]
j += 1
k += 1
return C
```
使用该函数可以将两个有序数组合并为一个有序数组。例如:
```python
A = [1, 3, 5]
B = [2, 4, 6]
merged = mergeArrays(A, B)
print(merged) # 输出 [1, 2, 3, 4, 5, 6]
```
希望能帮到你!如果还有其他问题,请随时提问。