Python查找两个有序列表中位数的方法【基于归并算法】


Posted in Python onApril 20, 2018

本文实例讲述了Python查找两个有序列表中位数的方法。分享给大家供大家参考,具体如下:

今天做到的一个机试题目,很简单,这里简单记录一下:

我用的是归并的思想,当然还可以用递归的方法,下面是具体实现:

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:找到两个有序列表的中位数
若列表总长度为奇数则直接返回中间下标的值
否则返回前一个值,如长度为6则返回下标为2处的值
'''
import random
def random_nums_genetor(max_value=1000, total=100):
  '''''
  生成随机数
  '''
  num_list=[]
  for i in range(total):
    num_list.append(random.randint(1,max_value))
  return num_list
def find_two_list_mid_num(num_list1,num_list2):
  '''''
  找到两个有序列表的中位数
  '''
  length1=len(num_list1)
  length2=len(num_list2)
  total=length1+length2
  if total%2==0:
    half=total/2-1
  else:
    half=total/2
  res_list=[]
  while len(num_list1) and len(num_list2):
    if num_list1[0]<num_list2[0]:
      res_list.append(num_list1.pop(0))
    else:
      res_list.append(num_list2.pop(0))
  if len(num_list1):
    res_list+=num_list1
  elif len(num_list2):
    res_list+=num_list2
  #print res_list
  print res_list[half]
  return res_list
if __name__ == '__main__':
  print "三水点靠木测试结果:"
  num_list1=[1,2,5,7,12,45,67,100]
  num_list2=[11,34,77,90]
  res_list=find_two_list_mid_num(num_list1,num_list2)
  print res_list[5]
  print '--------------------------------------------------------'
  num_list1=random_nums_genetor(max_value=1000, total=10)
  num_list2=random_nums_genetor(max_value=100, total=7)
  res_list=find_two_list_mid_num(num_list1, num_list2)
  print res_list[8]

结果如下:

Python查找两个有序列表中位数的方法【基于归并算法】

(代码摘自《Python Cookbook》)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python写的服务监控程序实例
Jan 31 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 Python
python 执行shell命令并将结果保存的实例
May 11 Python
python+pyqt5实现24点小游戏
Jan 24 Python
Python后台开发Django会话控制的实现
Apr 15 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Django模板Templates使用方法详解
Jul 19 Python
如何在Python对Excel进行读取
Jun 04 Python
简单了解Django项目应用创建过程
Jul 06 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
python安装sklearn模块的方法详解
Nov 28 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 #Python
Python之pandas读写文件乱码的解决方法
Apr 20 #Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 #Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 #Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 #Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 #Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 #Python
You might like
php中计算程序运行时间的类代码
2012/11/03 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
document.compatMode介绍
2009/05/21 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
学python需要去培训机构吗
2020/07/01 Python
Django日志及中间件模块应用案例
2020/09/10 Python
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
实习生自荐信范文
2013/11/13 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
2014全国两会心得体会
2014/03/17 职场文书
户籍证明格式
2014/09/15 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
经费申请报告
2015/05/15 职场文书
秋菊打官司观后感
2015/06/03 职场文书
基层工作经历证明
2015/06/19 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL