Python查找兩個(gè)有序列表中位數(shù)的方法【基于歸并算法】
本文實(shí)例講述了Python查找兩個(gè)有序列表中位數(shù)的方法。分享給大家供大家參考,具體如下:
今天做到的一個(gè)機(jī)試題目,很簡(jiǎn)單,這里簡(jiǎn)單記錄一下:
我用的是歸并的思想,當(dāng)然還可以用遞歸的方法,下面是具體實(shí)現(xiàn):
#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:找到兩個(gè)有序列表的中位數(shù)
若列表總長(zhǎng)度為奇數(shù)則直接返回中間下標(biāo)的值
否則返回前一個(gè)值,如長(zhǎng)度為6則返回下標(biāo)為2處的值
'''
import random
def random_nums_genetor(max_value=1000, total=100):
'''''
生成隨機(jī)數(shù)
'''
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):
'''''
找到兩個(gè)有序列表的中位數(shù)
'''
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 "腳本之家測(cè)試結(jié)果:"
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]
結(jié)果如下:

(代碼摘自《Python Cookbook》)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python實(shí)現(xiàn)兩個(gè)一維列表合并成一個(gè)二維列表
今天小編就為大家分享一篇python實(shí)現(xiàn)兩個(gè)一維列表合并成一個(gè)二維列表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
用python實(shí)現(xiàn)名片管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)名片管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
python如何為創(chuàng)建大量實(shí)例節(jié)省內(nèi)存
這篇文章主要為大家詳細(xì)介紹了python如何為創(chuàng)建大量實(shí)例節(jié)省內(nèi)存,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python基于QRCode實(shí)現(xiàn)生成二維碼的方法【下載,安裝,調(diào)用等】
這篇文章主要介紹了Python基于QRCode實(shí)現(xiàn)生成二維碼的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python下載,安裝與調(diào)用QRCode實(shí)現(xiàn)生成二維碼功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
python實(shí)現(xiàn)線(xiàn)程池的方法
這篇文章主要介紹了python實(shí)現(xiàn)線(xiàn)程池的方法,實(shí)例分析了Python線(xiàn)程池的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06
玩轉(zhuǎn)python爬蟲(chóng)之URLError異常處理
這篇文章主要介紹了python爬蟲(chóng)的URLError異常處理,詳細(xì)探尋一下URL\HTTP異常處理的相關(guān)內(nèi)容,通過(guò)一些具體的實(shí)例來(lái)分析一下,非常的簡(jiǎn)單,但是卻很實(shí)用,感興趣的小伙伴們可以參考一下2016-02-02

