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入门篇之字典
Oct 17 Python
Python编程中用close()方法关闭文件的教程
May 24 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
python实现杨辉三角思路
Jul 14 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
python创建与遍历List二维列表的方法
Aug 16 Python
python中常见错误及解决方法
Jun 21 Python
python 如何快速复制序列
Sep 07 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
Pygame Time时间控制的具体使用详解
Nov 17 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 form 表单传参明细研究
2009/07/17 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
js DOM模型操作
2009/12/28 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
2017/07/06 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
Python批量更改文件名的实现方法
2017/10/29 Python
Python重新加载模块的实现方法
2018/10/16 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
python自动下载图片的方法示例
2020/03/25 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
致跳远、跳高运动员广播稿
2014/01/09 职场文书
个性与发展自我评价
2014/02/11 职场文书
质量负责人任命书
2014/06/06 职场文书
银行金融服务方案
2014/06/11 职场文书
银行实习推荐信
2015/03/27 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
会议主持词通用版
2019/04/02 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
如何利用Python实现一个论文降重工具
2021/07/09 Python