python列表归并教程_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]

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]

结果如下:

2018420150329220.png?201832015348

(代码摘自《Python Cookbook》)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python查找两个有序列表中位数的方法【基于归并算法】

本文地址: http://www.cppcns.com/jiaoben/python/225769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值