你的位置:Python学习 >> 资讯 >> 深入学习 >> 详细内容 在线投稿

利用Python巧妙实现折半查找算法

热度771票  浏览111次 时间:2011年7月19日 10:15
Python学习D'G ij[2kz

# -*- coding:utf8 -*-

O,x B)Qd L;ZP0 Python学习9? F{&Of h

import osPython学习]]+b-S YV)Qa-|akn

Python学习?X0_S.?j'U

import sys

p-R | a7H0H:|-F0 Python学习lZ VXA-O4X

import mathPython学习kp!o1T_c e1Df AD

Python学习lFsT [;W~{

def halfSearch(arr=[1,2,3,4,5],find = 1):

3c.HS+Lj0 Python学习_.wpu ?(fMyI1g:h6|

'''''Python学习){D%qy0j

Python学习e|!o4_ h;n*t9Z9P

折半查找,2分查找

Z-n/hE g^.V v0 Python学习-? F)M,f Y2M

折半查找的前提是数据是有序的

T#EI*ezd#u9J0 Python学习x!n\&Lm`m

算法:mid = Math.floor(low+hight/2)Python学习 `0b&t!wGw

Python学习`$O.U La!U1p

'''Python学习#uH \M#V1e e3z

Python学习ik!gSB-F U

mid = 0

:s2pv2J7k0 Python学习:RS1BH z l H"_

low = 0

$E|{*@M0d&[K n0

y wklx2jt8u}:R0high = len(arr) - 1

-m/y!h%C-t&[z0 Python学习B'~$SWa!_ O&?

while(low<=high):Python学习 m,e_0ZB`S

Python学习 NL$W{xYY*W

print low,highPython学习3Ac&nXF:{M5i-MF9l

Python学习0[xdX m8{ } z^f7N

mid = (low + high)/2Python学习J;y vw4mV0x-?V'H

6m/W3\z"_QG;}0print mid

V5w6Yob~7K kSZ0 Python学习'[w"n}e*a2Qwvf

if(arr[mid]==find):Python学习?/q+~GJ1DoU

Python学习,r:g)z9bYQ:O ]

print "find %s index is %s",(find,mid)Python学习!u u?gj(Q

Python学习q.t*j.g:z?^

return

hSs Rj4x0 Python学习D+VaUp4Ha}

else:

)Z6[-J_NT `q0 Python学习2w[qGpE@"W

if(find > arr[mid]):

_ _Y#m3{m-C#|I0 Python学习qNq R$V tBPV"V

low = mid + 1

nv{oW oOj(m(NG0

z'y _8lJ Ut0else:Python学习:_a4lw;R7a

9cKcWu0high = mid - 1Python学习,|W%zE"T5tNU(g9TH

Python学习)o"`f;r qDo:C/S

print "Not Find"Python学习 k9nD~%|s

Python学习&H(Mmyqu.QY

return NonePython学习c kFB3bw]

Python学习,t|"o*B RA+YRUK

#运行脚本Python学习H H(XO1o7{2v'E1@GD

v/R]p}-N,|f/^4y~B0if __name__ =="__main__":

/W-u(c#R Mb!V7l H0 Python学习(v$A lBq&E6k]:q g

halfSearch()Python学习'?8b g i[m8l u

顶:36 踩:47
对本文中的事件或人物打分:
当前平均分:-0.13 (248次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.44 (231次打分)
【已经有209人表态】
39票
感动
28票
路过
17票
高兴
23票
难过
17票
搞笑
26票
愤怒
27票
无聊
32票
同情
上一篇 下一篇