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使用正则匹配实现抓图代码分享
Apr 02 Python
Python多线程编程(五):死锁的形成
Apr 05 Python
python实现合并两个数组的方法
May 16 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python反射和内置方法重写操作详解
Aug 27 Python
Django uwsgi Nginx 的生产环境部署详解
Feb 02 Python
python实现杨氏矩阵查找
Mar 02 Python
Puppeteer使用示例详解
Jun 20 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Python笔记之代理模式
Nov 20 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 Python
OpenCV-Python 实现两张图片自动拼接成全景图
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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
php获得文件扩展名三法
2006/11/25 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP加密解密实例分析
2015/12/25 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
javascript实现画板功能
2020/04/12 Javascript
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python实现中文分词FMM算法实例
2015/07/10 Python
详解Django中的form库的使用
2015/07/18 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
python requests.post带head和body的实例
2019/01/02 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
公司财务工作总结的自我评价
2013/11/23 职场文书
党委领导班子整改方案
2014/09/30 职场文书
教师创先争优承诺书
2015/04/27 职场文书
公证书
2019/04/17 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
python ConfigParser库的使用及遇到的坑
2022/02/12 Python