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

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

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

{;n,`bn0# -*- coding:utf8 -*-Python学习7R:f Yv}4h!N"V

Python学习 n ze(R6GHK$~2N

import osPython学习;lP8|Cr

DD7d{m|hy0import sys

K5~Bh fC0 Python学习&i9tEi)F)XV

import mathPython学习~ y(d\dH/iC

d,^eBs#I1U0def halfSearch(arr=[1,2,3,4,5],find = 1):

&q M%QwV#` E5M5g0 Python学习%Xh~G-R|

'''''Python学习,]f4b*ER[&Q

Python学习O#?`_9FZ'`

折半查找,2分查找Python学习S,PmmP~B

,JxYQ+jcZ0Wf0折半查找的前提是数据是有序的

{,~dn|;S6]0

2S*X V tY0算法:mid = Math.floor(low+hight/2)

8WPp m _ yN0 Python学习EJ+M;n` Yi

'''

cQ[)V5z~n0 Python学习 N Aw@n8p2wO

mid = 0

4O7Aj l)G0 Python学习4f8X-nso@ E6U} p

low = 0Python学习o+`TFb%F

S8[4me#u[W0high = len(arr) - 1

%j'd}#Tkjyj0 Python学习n_8}j;r8Ea

while(low<=high):Python学习7^k&t0ZX B:{&U

Python学习3JAd"uL+B

print low,highPython学习d `j:oT!j;I(U4G]k\

Python学习!|ag0E I3dJ

mid = (low + high)/2

&sS\:xRc:A0 Python学习XZ!}k\[2v

print midPython学习 juwI2ML-L8?,u

Python学习Y9JwP K1V ^

if(arr[mid]==find):

3S:^0Wr] iSs!K0 Python学习5hNtI)A%@SYz B

print "find %s index is %s",(find,mid)Python学习&a\4o!_^3aN_

Python学习-W6q4?uGX?p]z

return

6M0p%k*UEa.^F-m0

Lh`s"^+fl{ n6A0else:Python学习$q'P+~-aF uP

&J'}a2X*p0if(find > arr[mid]):Python学习#n Q u2TQ/M(?.hg

Python学习(T/D4zD5N%g$a

low = mid + 1

q,XAc i.U3q'`!\u0 Python学习yb4CVPi&Z aO

else:

0t-T _!_&U.vM/Z0

&T Z(r:l.{!T6]9b0high = mid - 1Python学习9u9g'pg5Rb'B"L

Python学习g\Ru zX%hU

print "Not Find"

6r L7l/tI @3Dhs0 Python学习 }5R/jn;v

return None

[ ](s$i U r cI$CdJ0 Python学习(bG5[VFiD Z

#运行脚本

7ZAz{lR0 Python学习#r6V*l['jhIH/i

if __name__ =="__main__":Python学习){\-V*to`\%S7G

Python学习 ^u;l^8p,@

halfSearch()Python学习)~x+FO-^

顶:36 踩:49
对本文中的事件或人物打分:
当前平均分:-0.18 (251次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.41 (234次打分)
【已经有213人表态】
42票
感动
28票
路过
18票
高兴
23票
难过
17票
搞笑
26票
愤怒
27票
无聊
32票
同情
上一篇 下一篇