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实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
Python实现二维有序数组查找的方法
Apr 27 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python3.6使用pickle序列化class的方法
Oct 22 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
学生信息管理系统Python面向对象版
Jan 30 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
python开发入门——列表生成式
Sep 03 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
重置版宣传动画
2020/04/09 魔兽争霸
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JavaScript中string对象
2015/06/12 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
javascript self对象使用详解
2016/10/18 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
区优秀教师事迹材料
2014/02/10 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
大型演出策划方案
2014/05/28 职场文书
集体生日活动方案
2014/08/18 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
师范生见习报告
2014/10/31 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
责任书范本大全
2015/05/11 职场文书