Python实现两个有序数组中位数计算:算法与代码详解
本文介绍如何使用Python计算两个有序数组的中位数,重点讲解时间复杂度为O(log(m+n))的算法要求。通过示例演示了合并排序后的中位数提取逻辑,并提供了基于NumPy库的简洁实现方案及完整交互代码,帮助开发者快速掌握列表均值与中位数的处理方法。
Python列表均值与中位数基础实现
以下直接展示相关代码实现。
import numpy as np
a = [2,4,6,8,10]
average_a = np.mean(a)
median_a = np.median(a)
两个有序数组中位数算法详解
Python中获取两个列表合并后的中位数方法解析
问题描述:
给定两个长度分别为 m 和 n 的有序数组 nums1 和 nums2。
请找出这两个有序数组的中位数,且算法的时间复杂度需控制在 O(log(m + n))。
假设条件:nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3] nums2 = [2]
计算结果为 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4]
计算结果为 (2 + 3)/2 = 2.5
# nums1 = [1,3,3]
# nums2 = [2,5,4]
def list_model(nums1,nums2):
nums = nums1 + nums2
nums.sort()
print("您输入的两列表为 :",nums)
n = len(nums)
# print((nums[int(n/2-1)] + nums[int(n/2)])/2)
# print(n)
if n%2==0:
model = (nums[int(n/2-1)] + nums[int(n/2)])/2
else:
model = nums[int((n+1)/2 - 1)]
return(model)
x = input("请输入第一个列表 :")
nums1 = x.split(',')
nums1 = [float(nums1[i]) for i in range(len(nums1))]
y = input("请输入第二个列表 :")
nums2 = y.split(',')
nums2 = [float(nums2[i]) for i in range(len(nums2))]
print("您所求的两列表的中位数为 :",list_model(nums1,nums2))
请输入第一个列表 :1,2.5,4
请输入第二个列表 :2,3,4
您输入的两列表为 : [1.0, 2.0, 2.5, 3.0, 4.0, 4.0]
您所求的两列表的中位数为 : 2.75
上述内容分享了Python列表List求均值和中位数的实例,供读者参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









