Python实现两个有序数组中位数计算:算法与代码详解

阿橙
阿橙
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何使用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求均值和中位数的实例,供读者参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表