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

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

热度740票  浏览102次 时间:2011年7月19日 10:15
Python学习C3Ri ?~

# -*- coding:utf8 -*-

^A Hp7L2Q.h0 Python学习g2`1qA Jg:N|uL

import os

1g;h1Y9JrJr.K0

;S%H-\S jg6j {0import sysPython学习 @ B/mOVr

Python学习(LD1` ci%pM|

import mathPython学习6X,J'U8Mh\.m

.W4^9lR}3Z&bl|3aF'h0def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习 qF2~#t3w,c6Y;N$YD-P

Python学习3x4iQ0e#N9t(qx5Il|c^

'''''Python学习i"M*L;~ciK7Zy F

Python学习"^Og oEBd{

折半查找,2分查找

-J+WqT#n'i0

X'Em*Np0折半查找的前提是数据是有序的Python学习m2A0\db7t9|e

Python学习$~:E[ P!R*B*SS Dp

算法:mid = Math.floor(low+hight/2)Python学习X;`9bLpQ

v"En(Zi0'''Python学习j#zi6T_J1{ d

Python学习gh BoV#I*U0pt

mid = 0

#Wo g2i[;p`0 Python学习e2b5_cT w/S

low = 0Python学习}o m$Mw

Python学习fM3[)}T b

high = len(arr) - 1Python学习x$aKjL

H/d$y`l7_l"k0while(low<=high):Python学习?h"Cp*_ H*ld

)O-Cn$cg NEl(Mr%V0print low,highPython学习*Lu cnD

B!n-eIK0mid = (low + high)/2

6y1NYV d0kMn0

Ou1p;LSNs:od0print mid

8o:b+n `U,yKe0 Python学习B ft/?F h\

if(arr[mid]==find):

F [g)`g S(F)r0 Python学习]H$r+F2do

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

L%gg#H.V yp2~+N0

m0O9S F k |!m0return

w)Fh U2f(]n,|s N&n0

W9UP5nqwlj0else:

+}oY3@ qFr d Y0

Dyu!V!r&o-{0if(find > arr[mid]):

o;HKH%~$K'd-e)~`O3X0 Python学习BF Ml U!~

low = mid + 1Python学习8]2EId9YU

Python学习;tG7i*Bo L|T

else:

-] ~ jr"}0

fPXxb4V"DW0high = mid - 1

b5H mPLR/G;Os0 Python学习BF#h4A!{7ff

print "Not Find"

,Gj6K_7]!lQ0 Python学习\&WTNOec

return NonePython学习3xb ]J^to}a-q4x

Python学习$b+[3^+a z rU)\;u

#运行脚本Python学习q%|8p#mlG6X ? ZX{T l

Python学习9M(|G5iVVj z

if __name__ =="__main__":Python学习$co"t e6k/d,A)l1P

4geVU`g&aIN%p/LD0halfSearch()Python学习a7``)[G,m$O

顶:36 踩:42
对本文中的事件或人物打分:
当前平均分:-0.16 (239次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.48 (225次打分)
【已经有198人表态】
35票
感动
28票
路过
17票
高兴
23票
难过
16票
搞笑
23票
愤怒
26票
无聊
30票
同情
上一篇 下一篇