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

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

本文介绍如何使用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。