📅  最后修改于: 2023-12-03 15:24:05.561000             🧑  作者: Mango
在编程中,我们经常会需要合并两个已排序的数组。下面将介绍几种方法。
双指针法是一种常见的解决合并已排序数组的方法。它需要两个指针分别指向两个数组的起始位置,然后比较两个指针所指的元素,将较小的元素放入合并后的数组中,并将指向该元素的指针向后移动一位,直到一个指针遍历完数组,然后将另一个数组的剩余元素依次加入合并后的数组中。
以下是使用双指针法合并两个已排序数组的 Python 代码:
def merge_sorted_arrays(nums1, nums2):
m, n = len(nums1), len(nums2)
i, j = 0, 0
merged = []
while i < m and j < n:
if nums1[i] < nums2[j]:
merged.append(nums1[i])
i += 1
else:
merged.append(nums2[j])
j += 1
if i < m:
merged += nums1[i:]
if j < n:
merged += nums2[j:]
return merged
归并排序是一种基于分治思想的排序算法,它可以用来合并已排序的数组。该算法将数组一分为二,然后递归地对左半部分和右半部分进行排序和合并,最终得到一个完全排序的数组。
以下是使用归并排序合并两个已排序数组的 Python 代码:
def merge_sorted_arrays(nums1, nums2):
def merge(nums1, nums2):
i, j = 0, 0
merged = []
while i < len(nums1) and j < len(nums2):
if nums1[i] < nums2[j]:
merged.append(nums1[i])
i += 1
else:
merged.append(nums2[j])
j += 1
if i < len(nums1):
merged += nums1[i:]
if j < len(nums2):
merged += nums2[j:]
return merged
def merge_sort(nums):
if len(nums) <= 1:
return nums
mid = len(nums) // 2
left = merge_sort(nums[:mid])
right = merge_sort(nums[mid:])
return merge(left, right)
return merge_sort(nums1 + nums2)
以上是两种合并已排序数组的常用方法,程序员在处理已排序数组时,以上方法将会非常有用。