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

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

热度577票  浏览70次 时间:2011年7月19日 10:15
Python学习%drf$b0v

# -*- coding:utf8 -*-

Nu{/vcK:fg0

fR c4C |6@"_,? e@0import os

n(pF;i0y*WAI0

'D7M2C0b&r.h&f{%z0import sysPython学习 _%G0Z!L%}b

Q E'z#E2T#?I.X&i0import math

'Tio%Nof)M0 Python学习(Uf:XKLOO2M8t

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

){I'? uP0 Python学习5h{3WInf:g:g

'''''

E|g(?R'H f0 Python学习)[#?#jZ_?P:f

折半查找,2分查找Python学习H5C7LQy+WoyI(sF

Python学习:p@C,V |F

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

yhPL Bh~ q;y0 Python学习-zSQvJ VZ8X!?s

算法:mid = Math.floor(low+hight/2)

WF vM[0P o_ t0

6{.Mx.^mo2mdH0'''

l9['Hp%z'm#a B0 Python学习pWvuq

mid = 0Python学习?6C2R5C9].~8J2r

d2ay Jw Z8q3c-E0low = 0Python学习%XYA? O0BD

Python学习&j)F;QlPUDS

high = len(arr) - 1Python学习4ATm A~:B

Python学习&P(An%|-I+e6i"`2v+d

while(low<=high):

0r1P(\6P(F0 Python学习@ e2[8z-a.Z

print low,high

.uV TB n+X]ET0

*j,A~g AD0mid = (low + high)/2Python学习8D;cRMp?

Python学习yCl!^#b?C

print midPython学习;p{` I(K Dpp"su

?6fh9u I {0if(arr[mid]==find):

Wy LA6G:C~-a2y3Q0 Python学习*Sm5pY+K_

print "find %s index is %s",(find,mid)Python学习;C-Y5xh]x?e

Python学习g+R/d qpU

returnPython学习d_!`!`s!s

FF:L o6l.E!G0else:

7d l UwTB\|)xEt _0 Python学习{]Sh?$F?

if(find > arr[mid]):

/S yS\ O:ECyyd x0 Python学习:`![1i b ]{

low = mid + 1

2`Z1B E yd ?*l+l ?H#A0

XF$H H(n"fm0else:

H0L8a i"`7Y8}x7j0 Python学习t0SQlM;?f&\1O+^

high = mid - 1Python学习K1~1Uv5C(}

;JJ5Oc:~Bo0print "Not Find"

x#^ A?*}*D0

.p!c&D1Jx0return None

hit^e,qa9R H0 Python学习TxB k&t

#运行脚本Python学习,xwD3jT f;~] gb

layX?*oi8l0if __name__ =="__main__":Python学习N P@a7ju

Python学习3w/a0h~ a[-p:r

halfSearch()Python学习%F{omj

顶:29 踩:33
对本文中的事件或人物打分:
当前平均分:-0.15 (185次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.31 (171次打分)
【已经有159人表态】
26票
感动
23票
路过
13票
高兴
20票
难过
13票
搞笑
19票
愤怒
20票
无聊
25票
同情
上一篇 下一篇