欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python查找兩個(gè)有序列表中位數(shù)的方法【基于歸并算法】

 更新時(shí)間:2018年04月20日 14:42:58   作者:Together_CZ  
這篇文章主要介紹了Python查找兩個(gè)有序列表中位數(shù)的方法,結(jié)合實(shí)例形式分析了Python基于歸并算法遍歷、計(jì)算有序列表相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python查找兩個(gè)有序列表中位數(shù)的方法。分享給大家供大家參考,具體如下:

今天做到的一個(gè)機(jī)試題目,很簡單,這里簡單記錄一下:

我用的是歸并的思想,當(dāng)然還可以用遞歸的方法,下面是具體實(shí)現(xiàn):

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:找到兩個(gè)有序列表的中位數(shù)
若列表總長度為奇數(shù)則直接返回中間下標(biāo)的值
否則返回前一個(gè)值,如長度為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 "腳本之家測試結(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)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論