python找到两个有序列表的中位数
来源:互联网 发布:儿童怎么学英语 知乎 编辑:程序博客网 时间:2024/06/05 14:55
今天做到的一个机试题目,很简单,这里简单记录一下:
我用的是归并的思想,当然还可以用递归的方法,下面是具体实现:
#!usr/bin/env python#encoding:utf-8'''__Author__:沂水寒城功能:找到两个有序列表的中位数若列表总长度为奇数则直接返回中间下标的值否则返回前一个值,如长度为6则返回下标为2处的值'''import randomdef 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_listdef 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_listif __name__ == '__main__': 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]
结果如下:
1212--------------------------------------------------------969969[Finished in 0.3s]
阅读全文
1 0
- python找到两个有序列表的中位数
- 找到两个有序数组的中位数
- 在两个有序数组中找到中位数
- 两个有序数组的中位数
- 两个有序数组的中位数
- 两个有序数组的中位数
- 两个有序数组的中位数
- 两个有序序列的中位数
- 两个有序数组的中位数
- 两个有序数组的中位数
- 两个有序数组的中位数
- 两个有序序列的中位数
- python 列表的中位数
- Python合并两个有序列表
- Python合并两个有序列表
- Python--合并两个有序列表
- 求两个有序数组的中位数
- 求两个有序数组的中位数
- spark四大特性
- IDEA新建Springboot项目
- 慕课网学习笔记Maven+ssm
- 设计模式六大原则
- FZU2282Wand (组合数学+错排应用)
- python找到两个有序列表的中位数
- hdu1246递推
- 找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍
- C语言中有关一维数组的一些运算
- JavaSE-5
- (9)Mysql存储引擎
- 数组Array的应用
- Java学习路线图
- ZOJ 2849 Attack of Panda Virus(BFS+优先队列)