给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请用python找出并返回这两个正序数组的中位数
时间: 2024-05-16 13:15:35 浏览: 131
寻找两个正序数组的中位数1
可以使用归并排序的思想来合并这两个有序数组,然后找到中位数。
具体步骤如下:
1. 将两个数组合并成一个有序数组。
2. 如果数组长度为奇数,中位数为数组中间的元素。
3. 如果数组长度为偶数,中位数为中间两个元素的平均值。
代码如下:
```python
def findMedianSortedArrays(nums1, nums2):
# 合并两个有序数组
nums = []
i, j = 0, 0
while i < len(nums1) and j < len(nums2):
if nums1[i] < nums2[j]:
nums.append(nums1[i])
i += 1
else:
nums.append(nums2[j])
j += 1
if i < len(nums1):
nums.extend(nums1[i:])
if j < len(nums2):
nums.extend(nums2[j:])
# 计算中位数
n = len(nums)
if n % 2 == 0:
return (nums[n // 2 - 1] + nums[n // 2]) / 2
else:
return nums[n // 2]
```
测试代码如下:
```python
print(findMedianSortedArrays([1, 3], [2])) # 输出 2.0
print(findMedianSortedArrays([1, 2], [3, 4])) # 输出 2.5
```
阅读全文