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完全新手教程
Feb 08 Python
浅析Python中的序列化存储的方法
Apr 28 Python
浅谈Python中数据解析
May 05 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
PyQt打开保存对话框的方法和使用详解
Feb 27 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
opencv python如何实现图像二值化
Feb 03 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python安装及变量名介绍详解
Dec 12 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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/08 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Python中协程用法代码详解
2018/02/10 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python序列化pickle模块使用详解
2020/03/05 Python
课程设计心得体会
2013/12/28 职场文书
网络维护中文求职信
2014/01/03 职场文书
实习单位接收函
2014/01/11 职场文书
人事文员岗位职责
2014/02/16 职场文书
书香校园建设方案
2014/05/02 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
学校运动会广播稿
2014/10/11 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript