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系列之从文件读取和保存数据
May 23 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
Python中extend和append的区别讲解
Jan 24 Python
Python的log日志功能及设置方法
Jul 11 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
python多线程与多进程及其区别详解
Aug 08 Python
python mock测试的示例
Oct 19 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
粗暴解决CUDA out of memory的问题
May 22 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php显示时间常用方法小结
2015/06/05 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
JavaScript的Cookies
2008/01/16 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
jquery each()源代码
2011/02/14 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python判断数字是否是超级素数幂
2018/09/27 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
opencv python如何实现图像二值化
2020/02/03 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
深入理解Python 多线程
2020/06/16 Python
python全栈开发语法总结
2020/11/22 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
店长职务说明书
2014/02/04 职场文书
对祖国的寄语大全
2014/04/11 职场文书
文明寝室标语
2014/06/13 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
五年级作文之想象作文
2019/10/30 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书