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

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

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

MGQve'Ta r0# -*- coding:utf8 -*-

9wA"Y H\#S$R0

6e-~mEnB2a0import osPython学习v,Aw*aP1u0sA

*wW(_y{x*D.nJ~Q0import sysPython学习RI0_r8b:I

b"N0s`(x'r?W&hq0import math

}aH2e:DD!d0

-S` G[R0def halfSearch(arr=[1,2,3,4,5],find = 1):

'Kw6m$N G0 Python学习*],?*t9{$cd F R

'''''Python学习? jh8{3k

#T8O/W6Ttz U0折半查找,2分查找Python学习1t2q&q5w*mFa;t%K

W+[X)qm3j!fN0折半查找的前提是数据是有序的Python学习myHj Y \$Q

Dt|!k mpI-O R0算法:mid = Math.floor(low+hight/2)Python学习:C-p Y4o"M7B0vF

;z'C*Ql,F N3y` N(k0'''

L,ioXq:l pZ0

(C|8h*NnNm/YNh0mid = 0

9I(R'?O'c&Bo0

t5sktMp:Tm&Z$K0low = 0

j0p^gM9n/p_2R*oD0 Python学习 G6S7L'V7O1_vFB*}M

high = len(arr) - 1

0R KN`wbb]N0

f1mR?)PX S q,_0^0while(low<=high):Python学习rO$y7O#ud

Python学习']c;nd_5e

print low,high

Zl2X]d#Fo'_0

ukM)Y)EW0mid = (low + high)/2

+fey;F!dx(G"Y0 Python学习+O5kC,i#FqzK,Z

print midPython学习?'i Lw#Q G|

@;S_l9BA0if(arr[mid]==find):

Jl5W7M'b3~ T&]0

#dcQdL7F9s&G(s'F0print "find %s index is %s",(find,mid)Python学习d.k]1H1v jF'L~

Python学习OI\cW'C$Wb

return

:?*x|_1an!qy0

7^ cB(lTCl,Q2\0else:Python学习3`1@^Xv_hs

XO!gxXRvPR C0if(find > arr[mid]):

BlF/G9]0 Python学习2V_-x$fOD7V.CNg{

low = mid + 1Python学习)n'rCwdV

!S3IJ9Y4GZP-U(J0else:Python学习|B9}z_V

Python学习:@*pF {#lx

high = mid - 1

`[.o ]c,uzi0

pydN'L0print "Not Find"

4I3k!uL!x O!s5p0 Python学习[%{?1U9U.dC\

return None

K1e~'@ ]]0 Python学习-T,_j\k|

#运行脚本

Ho/E)UKo0 Python学习p F}#pP

if __name__ =="__main__":Python学习+Ra:hZ,fo

Python学习`|}&b,e2}6z

halfSearch()Python学习N{dM$}i

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