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中文分词实现方法(安装pymmseg)
Jun 14 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python去掉空白行的多种实现代码
Mar 19 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
谈一谈基于python的面向对象编程基础
May 21 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Python如何读写CSV文件
Aug 13 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
javascript实现数字时钟效果
2021/02/06 Javascript
python执行等待程序直到第二天零点的方法
2015/04/23 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python安装教程
2018/02/28 Python
python实现图片筛选程序
2018/10/24 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python实现XML解析的方法解析
2019/11/16 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
调研座谈会发言材料
2014/08/23 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
导游词之凤凰古城
2019/10/22 职场文书