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正则分组的应用
Nov 10 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python中常用信号signal类型实例
Jan 25 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python使用numpy读取、保存txt数据的实例
Oct 14 Python
python列表使用实现名字管理系统
Jan 30 Python
python pandas 时间日期的处理实现
Jul 30 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
python实现堆排序的实例讲解
Feb 21 Python
django中的数据库迁移的实现
Mar 16 Python
Python非单向递归函数如何返回全部结果
Dec 18 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实现文件安全下载
2006/10/09 PHP
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
面试题:react和vue的区别分析
2019/04/08 Javascript
JS实现音乐钢琴特效
2020/01/06 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
Python实现简易端口扫描器代码实例
2017/03/15 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
python自动发微信监控报警
2019/09/06 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
淘宝好评语句大全
2014/12/31 职场文书
金榜题名主持词
2015/07/02 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书