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

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

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

pk Z'Ur/yD0# -*- coding:utf8 -*-

f { })yv0 Python学习MC*w^%mO']v9m

import osPython学习gX6QCS+F!I"pF,I

Python学习;dk6k${"V1l-W

import sysPython学习2OJ$H;@6fV

I&\r*H5H0import math

V(Ze.Gn0u0 Python学习| GL3n2|7Y~a%O

def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习$H:p c a3G){

Python学习GF`X i3ir

'''''Python学习Vn'~?nz3v$D

Python学习7F cG|~

折半查找,2分查找

"xa*d2RN1V3~0

L.c#[{f/Q+eF a0折半查找的前提是数据是有序的

Z&V8L9bt]/Y4t0

V0Rf+a-T*[+f|0算法:mid = Math.floor(low+hight/2)

E @d%l*\q#DZ+K0

F I!Z,iz0'''

Ha Cv/F!F0 Python学习B{ uO n*h#PO

mid = 0

;sjf ^KxKO@$?0 Python学习!CntK"LH/@'{)F @

low = 0

nMA#B0_~ f0

vE}Q3y'U9D'R0high = len(arr) - 1

#e8c/f_&STpf;J4Yi0

j!\P0m2a{1Z1b~0while(low<=high):

X LUrbn(W0

g O,vZ?.|rq~b_0print low,high

Q`pjy!S#R^a"KS#I0 Python学习 \s2kX\

mid = (low + high)/2Python学习v-wt9r:P.W)y-}

Python学习m1k*HqV(f

print mid

;X#t4eOAz r]0

~,_;UXC1?+S,tL0if(arr[mid]==find):

pyT;^w0 Python学习2Z~7zX1L*C MV

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

,qG ot6{\ deg0

YqT0D0@] MY%[^z0return

#uP4_uS1{r0 Python学习[`F!y!b WWY U

else:Python学习5xd0RM;VW:i

Python学习5})L^!vN D;`

if(find > arr[mid]):Python学习'A.G[fw `F@3gD8t

LH5N*U @}j0low = mid + 1

j6c8a.E PF S0 Python学习 l3Nw`(Fco1H

else:Python学习4|#Fb+F$Ye;V

Python学习R/jEQSyg(U`

high = mid - 1

,E` _R$LN0 Python学习3}&U:l h"\K

print "Not Find"Python学习-H:~I@R x9q

Python学习Z"H2S.C0W

return NonePython学习$j'l7[k#Wj{VDI

Python学习u2r7EgKjdqP3?

#运行脚本

0td.G f:o;g:s^0 Python学习Wa8~G dnp7i

if __name__ =="__main__":Python学习a`i/U}reY

Python学习fLq:fw

halfSearch()Python学习(~&sW6A:Hp0\q

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