这篇文章主要介绍了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): ''''' 找到两个有序列表的中位数 ''' length2=len(num_list1) length3=len(num_list2) total=length2+length3 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如何查找两个有序列表中位数”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。