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

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

热度647票  浏览83次 时间:2011年7月19日 10:15
Python学习P7Q7b|S

# -*- coding:utf8 -*-Python学习l)B;q9^/x![/|S#C$p

%yFPWz0SDm0import os

%dH,]/{B0 Python学习~?LU,F(w

import sysPython学习Utu}j

H9S w7e}0import mathPython学习(F_.s"Nt,Yr:Q

Python学习1R9["sD vOm

def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习#?DXpE6O O5B

Python学习DB/qru2`}

'''''Python学习 I6X)Y7phb ]2ez

.I%aP8e:J'yL7dA0折半查找,2分查找

2R;[%{;A$J ]2c%X^h,j0

gCL0oXt0折半查找的前提是数据是有序的Python学习+c vk9^1s&eB^

$e6d&V`P*J6Ip0算法:mid = Math.floor(low+hight/2)

c2Wv*PB$z pm0

k|9{;DU{0'''

%A:jar je0 Python学习Vbb(RY2f'n

mid = 0Python学习apaZ F:l.o

!aH U|5dz3fL(Y7|0low = 0

9MLz'O8?f@2{ PI0 Python学习0Yq Ugm.XK)v

high = len(arr) - 1Python学习,?/wy_ [$?

Python学习 Fop,O+rB7o7U

while(low<=high):

3`6gM7k9P9n ^nD'f0

8H v#p9E1X5e0W,g0print low,high

(V6of8aZ2i(R^9a0 Python学习9md\] d/{3f2d;Vv*y

mid = (low + high)/2Python学习 r,_|_4nqT

0JB5b-fg!?ey X&o0print midPython学习F_2uB%u'}hP

Python学习5dy@ cwAZG

if(arr[mid]==find):Python学习 l.U*Zji p^h1K*|t

5m!~2ET JY0print "find %s index is %s",(find,mid)

F/mC7cJ\0

5Pg6H(HF:J!~0returnPython学习E3\j7O D!b W v#A

RF6A2v ~&} _0else:Python学习X b[;k~$W a

Python学习6C5m'd2Zvsi7H

if(find > arr[mid]):

$ym1S#I7Q$j{b0

#I8Sx.E"g_U#E0low = mid + 1Python学习"tN)ZH/I

Python学习%U IQXZ2} t

else:

[7l!Z:N(b7I4r)PQr0 Python学习H b"f[.{

high = mid - 1Python学习 A;IA%W(QO

q8V _m,W0print "Not Find"Python学习+^ \!FL_RCH1`

Python学习{/sB h'Uot(n-g

return NonePython学习I DXwh5Y

}z#RU4~2}7f!UFj0#运行脚本Python学习hxi*zX8b q;T

)e)Z#Gb.@6E!W,qc0if __name__ =="__main__":Python学习z/y9c^,yK

yQ+slQ6A_0halfSearch()

+BEVX R-V0
顶:31 踩:35
对本文中的事件或人物打分:
当前平均分:-0.2 (211次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.44 (194次打分)
【已经有176人表态】
30票
感动
24票
路过
15票
高兴
20票
难过
15票
搞笑
20票
愤怒
24票
无聊
28票
同情
上一篇 下一篇