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 相关文章推荐
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
Python安装与基本数据类型教程详解
May 29 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
Python爬虫与反爬虫大战
Jul 30 Python
django如何自定义manage.py管理命令
Apr 27 Python
python井字棋游戏实现人机对战
Apr 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垃圾回收机制引用计数器概念分析
2013/06/24 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
angularJs中datatable实现代码
2017/06/03 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
python基础教程之五种数据类型详解
2017/01/12 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
python版百度语音识别功能
2019/07/09 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
团日活动策划书
2014/02/01 职场文书
个性婚礼策划方案
2014/05/17 职场文书
心理咨询承诺书
2014/05/20 职场文书
初婚未育证明样本
2015/06/18 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android