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

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

热度760票  浏览105次 时间:2011年7月19日 10:15

L`Wj `] g0# -*- coding:utf8 -*-Python学习V4v cw]#s~

NH)w+yA"^c0import osPython学习1B\+]1pHX"[ SP

"t$UQ D:bDrIW,{0import sys

+{vU4y1C0

qP5p;DY;_A;y9P0import mathPython学习7h Sl*z0YtuL%j

c N:jiH Zx?y9xy0def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习-W0I P;R\o?[ Eq%I

Python学习5bf$SQ^ g

'''''Python学习9^:V8}.N/J@

vv1By4TE7c;|0折半查找,2分查找Python学习'm+D u0KN/I$hFP

D` ~2R8L }:O S5b4l0折半查找的前提是数据是有序的Python学习+Gt3k/b(h3d

Z {q|T t,H)QV0算法:mid = Math.floor(low+hight/2)Python学习K&@$V$B+Rg Jo J

$k{1R2I"nU/?2~0'''Python学习qlZ.n0E3t/PH

Python学习y3J,q-ac mkO

mid = 0Python学习0vHGb1PB'^4g@

;?2P,v4t R.u4U.l!x0low = 0Python学习tY*D ]| p2E

Yn)EO }FbD b.a`ZO0high = len(arr) - 1Python学习2xYSa)H'P7F

8C3v~Qx.~U.n'@@K;@ {0while(low<=high):

^OxKQ-}Ko`0 Python学习el ~3})K

print low,highPython学习Pn.|,N3D2yTn%fs

\ q"`#X/]B e _3B K0mid = (low + high)/2

wC.U2mQV0 Python学习4jYn~tg$o:`

print midPython学习G'z:?oJ;tZL Y

Python学习j;^FZ^

if(arr[mid]==find):Python学习@g$A7N8a(u(~W%X

Python学习 d:VQn@dh

print "find %s index is %s",(find,mid)Python学习c#z&d5i/H

Python学习VT to4S2u:_k

return

Q(P3`-_2b)w3tY'}0

P#]*ip hk^0else:

5}6A~r[{ m VG0 Python学习LO B-f7[`

if(find > arr[mid]):

"S\?cj6n _0 Python学习W)n0zz,T3_bP

low = mid + 1Python学习:SX*m3_+d\%M)M

O6Uz9^1p&S!_ {?0else:Python学习kaB5U{@

Python学习W nf Wj${k"y;fH4K,z

high = mid - 1Python学习%_+M#[6N7^/L$xQ

sbPj j|L0print "Not Find"

WB2Vj nU&A7I-c4Y0 Python学习*CTFVBzIe.N+t

return NonePython学习Ug}iT

Python学习9R"|vqUN l4RQ;L

#运行脚本Python学习Z3g @%]_e q o)w0{

Python学习1B3kE {^7]6Q l4C

if __name__ =="__main__":

4y^%][,Ndn0

o8tI0do{\0halfSearch()

O7w%|$CEacG0
顶:36 踩:44
对本文中的事件或人物打分:
当前平均分:-0.17 (245次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.44 (229次打分)
【已经有206人表态】
38票
感动
28票
路过
17票
高兴
23票
难过
16票
搞笑
26票
愤怒
27票
无聊
31票
同情
上一篇 下一篇