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

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

热度591票  浏览71次 时间:2011年7月19日 10:15
Python学习FQ/q/d?m'w4@z

# -*- coding:utf8 -*-Python学习l"d]6T Q}3rTu

E3F$iz"G+b0import os

i8]n,LP%tP|0 Python学习#Ci%B;r#A)r

import sysPython学习:WvK-@&{.`art;{

x$IH6q$} Hb0import math

5knQ&]` l0

v ca@EDQUy F0def halfSearch(arr=[1,2,3,4,5],find = 1):

I@2o8bw&hQ0

1T1{"b%a2m$T5_0'''''

']4JiG5x?F!z0

d ZKoqr;U-dvE0折半查找,2分查找Python学习3TK[:a0P r'x {!h

Python学习&gT k/O.H q

折半查找的前提是数据是有序的Python学习w(] c6R Ad"{

Nt:P4Y$KA0算法:mid = Math.floor(low+hight/2)Python学习8D$j r+k1E

Python学习lcF%EY*k

'''

z*D t*I.Y!` t:G9KW0 Python学习(fo[Z/Yb

mid = 0Python学习Op!Ev:n'gZi

Python学习.u,K ^Yv

low = 0Python学习b5E#G?V-D$_Goi.X9c

Python学习|S#c a:Q0A

high = len(arr) - 1

Y8W;vJ$V;icr0 Python学习9S+Z9^[)Q/Z@

while(low<=high):Python学习K.Q(M:x9p2[p

7X?pp:r6QjGJ0print low,high

,F rx\Z%I/Ds\[xj0 Python学习*X)o\~ P K

mid = (low + high)/2Python学习y"Sk#v-\RwU_

Python学习_ i{'g'c9p

print mid

KD1E{1?t:Vk0

U#p0E9U%P$y;E1l0if(arr[mid]==find):Python学习{PRPj"N9mv+}-`v'F

9U!CNPH3a7?d0print "find %s index is %s",(find,mid)

!r@!jp5L6Q3|6{[0

c)G#qh-JaT`X0returnPython学习2x@ AgZ*YU

Python学习Bte s'\ z\0_

else:

!U6| QBy(? e0 Python学习j*G[D|;M)H D:]TL _Y

if(find > arr[mid]):Python学习m#uJ?[h7q

L[;c&v3`#Y0X0low = mid + 1

#slp cO \P3I0

!k*B K.CJ.].Z0else:Python学习#s hW#t@/[3I.NB

Python学习 b8kIW rWl,mZ1s ^

high = mid - 1

a'J N l6Q9ku:s0 Python学习$V-nY])}[]2\

print "Not Find"Python学习*l$W9y@(gj/e b

PK GM6Ir@6f0return NonePython学习.c1K4Rp;P`)Y/V id

1J MSJBB'V0#运行脚本Python学习A8Z2k e[ V#w/_

}.T#Y(@/Z5^g/\+n3c0if __name__ =="__main__":

f@A4J7R-Y U0 Python学习?er {~;` nH

halfSearch()Python学习r1q Lk0V3HI7f

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