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

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

热度613票  浏览78次 时间:2011年7月19日 10:15
Python学习};wVy R.?_

# -*- coding:utf8 -*-Python学习c|2P$va7{6Kyk#e^!kIf

6u/c"~ ? @t)[0import os

!Be9D E7bO\0

"f)f;f?$Qz0k0import sys

Dpp5fky0

0I0m~.vJT0import mathPython学习3S;AD;|by

{+G y%qt;z"QP0def halfSearch(arr=[1,2,3,4,5],find = 1):

9H&K/FG*j:E0

Rw'k2r:Q$M5^0'''''Python学习 N$qJ)~i\a A

Python学习oW.]ex-X8vvo

折半查找,2分查找Python学习m!SfV5wq6`b

Python学习o;qs"q1j

折半查找的前提是数据是有序的Python学习UR0SK0d&M9we5T

.]hBU,SI(~"H A0算法:mid = Math.floor(low+hight/2)Python学习1QS|4_5_"B

Python学习i/X-^0X@5u

'''

'N2UM'GEz0 Python学习#Si0YVB Y5HHw U2F

mid = 0

u}#m3W)p(w?+y#]0 Python学习Npeo8tN~X

low = 0Python学习(wuO7v%_ H^jCs

H{-P s5b1b C&kP0high = len(arr) - 1Python学习/OJz8PgRw

Python学习4O v)R#h!KPf

while(low<=high):

Y6f8g1W*r(^S*K0

eRG+co-L1cp0print low,high

m Y*U ?+M SO&b0

A)uV9`[Q7m0mid = (low + high)/2

{ ri)p1_1t0

q0H2OlL0print mid

B!USOc7x V/~9B0

+pu}o)t0if(arr[mid]==find):

)Tp}L$F9p0 Python学习0m w9N ]/`1KxLiy

print "find %s index is %s",(find,mid)

H2}&Fy)J z1u0 Python学习2@*B }Bf\

return

"ddQz$W0

AJd;R5[0else:

1q%W,K)Q-YN2|b0 Python学习\v!J,qCTiLV:FH

if(find > arr[mid]):Python学习g$B W"r\:S}$\#l

*m;gv!d?s5F0low = mid + 1Python学习{e#X }4n W.A!P

%P+zf}3q)a@r0else:

;ZA-KD%O0 Python学习xz%mS%XT![)sA

high = mid - 1Python学习r&A;b9TP

`_.W,[+}k3m0print "Not Find"Python学习IPB(Fnr:V

+o@Y;z#zvU0return None

O{jCG$x b0

R8|xg l'R0m#k0#运行脚本Python学习%Wrvh$] yNV

Python学习#y~'b;D.[$v)V6I0pb

if __name__ =="__main__":

9c5eg| [.Af`(?c&M0

!kC H$]1M]W+{0halfSearch()

:P:b4}S(idL3_?c0
顶:30 踩:34
对本文中的事件或人物打分:
当前平均分:-0.15 (197次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.4 (184次打分)
【已经有168人表态】
28票
感动
24票
路过
14票
高兴
20票
难过
14票
搞笑
19票
愤怒
22票
无聊
27票
同情
上一篇 下一篇