Python查找两个有序列表中位数的方法【基于归并算法】
2019/7/15 0:53:38
本文主要是介绍Python查找两个有序列表中位数的方法【基于归并算法】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文实例讲述了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 Cookbook》)
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
这篇关于Python查找两个有序列表中位数的方法【基于归并算法】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04Python外包有哪些常见的主要库-icode9专业技术文章分享
- 2024-10-02基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)
- 2024-10-01怎么用python搭建一个系统-icode9专业技术文章分享
- 2024-09-30Python基础入门教程
- 2024-09-30获取参数学习:Python中的基础教程
- 2024-09-30Python编程基础详解
- 2024-09-29点击加载学习:Python编程基础教程
- 2024-09-29数据科学五大Python前端库:第二部分
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础