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开发中module模块用法实例分析
Nov 12 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Python (Win)readline和tab补全的安装方法
Aug 27 Python
详解Python3 pickle模块用法
Sep 16 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
Jun 11 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 进程锁定问题分析研究
2009/11/24 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
composer.lock文件的作用
2016/02/03 PHP
PHP实现文件上传与下载
2020/08/28 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
JQuery live函数
2010/12/24 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
Python 第一步 hello world
2009/09/25 Python
Python基础之函数用法实例详解
2014/09/10 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
python异常和文件处理机制详解
2016/07/19 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
协议书范本
2014/04/23 职场文书
实用求职信模板范文
2019/05/13 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书