要找到两个正序数组的中位数,可以使用合并排序的方法。
首先,将两个数组合并成一个有序数组。然后,根据数组的长度确定中位数的位置。
如果数组的总长度是奇数,中位数就是合并后数组的中间元素。
如果数组的总长度是偶数,中位数是合并后数组的中间两个元素的平均值。
以下是一个实现示例:
def findMedianSortedArrays(nums1, nums2):
merged = merge(nums1, nums2)
length = len(merged)
if length % 2 == 0:
mid = length // 2
return (merged[mid - 1] + merged[mid]) / 2
else:
mid = length // 2
return merged[mid]def merge(nums1, nums2):
merged = []
i = 0
j = 0
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
while i < len(nums1):
merged.append(nums1[i])
i += 1
while j < len(nums2):
merged.append(nums2[j])
j += 1
return merged
这个实现中,`findMedianSortedArrays`函数接受两个正序数组`nums1`和`nums2`作为参数,并调用`merge`函数将它们合并成一个有序数组。然后,根据合并后数组的长度,返回相应的中位数。
时间复杂度是O(m+n),其中m和n分别是两个数组的长度。