python寻找两个有序数组的中位数 给定两个大小为m和n的有序数组nums1和nums2。请你找出这两个有序数组的中位数。假设nums1和nums2不会同时为空。例如,nums1=[1,3],nums2=[2],则中位数是2.0。nums1=[1,2],nums2=[3,4
时间: 2024-11-22 22:38:52 浏览: 18
算法/编程练习:两个有序数组的中位数
在Python中,寻找两个有序数组的中位数可以采用合并排序数组再求中位数的方式。首先,将两个数组合并成一个新的有序数组,然后根据合并后的数组长度来确定中位数的位置:
1. 如果数组合并后的总长度 `m + n` 是奇数,中位数就是中间那个元素。我们可以计算出中间索引 `mid = (m + n) // 2`。
2. 如果数组合并后的总长度是偶数,中位数则是中间两个元素的平均值。此时中间索引为 `mid1 = mid - 1` 和 `mid2 = mid`。
以下是具体的代码实现示例:
```python
def findMedianSortedArrays(nums1, nums2):
# 合并两个数组
merged = sorted(nums1 + nums2)
# 根据数组长度判断中位数位置
length = len(merged)
if length % 2 == 0: # 偶数长度,取中间两个数的平均值
mid1 = length // 2 - 1
mid2 = length // 2
median = (merged[mid1] + merged[mid2]) / 2.0
else: # 奇数长度,直接取中间的那个数
mid = length // 2
median = merged[mid]
return median
# 测试例子
nums1 = [1, 3]
nums2 = [2]
print(findMedianSortedArrays(nums1, nums2)) # 输出:2.0
nums1 = [1, 2]
nums2 = [3, 4]
print(findMedianSortedArrays(nums1, nums2)) # 输出:2.5
```
阅读全文