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

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

热度631票  浏览82次 时间:2011年7月19日 10:15
Python学习 UI}?4Z$Ab

# -*- coding:utf8 -*-

@7D+H8LYf0

i#KXr I jI0import os

~i1g$J/l6@:Z6Ki o0 Python学习,ar1|0g"D}1\Y/C

import sys

ZixqQxh9p0

'R3]6s-B.N?l0import math

$I!c;_a#wIx0 Python学习 @E!Q8?~d)up$Y R

def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习Bw Y^a~5P?qG

8YB%Z]&q WI"p;~|0'''''Python学习:D(d;S7o5q%J1NY`#vT

Python学习2^2i&h&oTiS

折半查找,2分查找Python学习z:hT-{+AL*jS Z&K

Python学习dxSM L B#I_de

折半查找的前提是数据是有序的Python学习R4h\%Y2jWY

Python学习 X/V'@P BT;\ vc

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

C;t;R q*Yf0

t-uv@ O|(K |$g:A0'''

HX? z1Q%n9AX t5xg0 Python学习 gL&w0y"}]@ R:X

mid = 0Python学习J5e+Xyy2\6^

6v-h^7{)Gc(d;D0low = 0Python学习z:e q0v4A1T

L]-F5f*w8^0high = len(arr) - 1Python学习cr ` x*y

Python学习4P6_ P*m|g2O*UK

while(low<=high):

@$Q8y N9| q!j [0

_D.O,nn/L0print low,high

D&S&QmO@x"r0 Python学习2f#dfM&wp%q q2r

mid = (low + high)/2Python学习0Sva1d*TU:K Cn

Python学习UW\5t2?1e9N

print midPython学习m T6]#U|#h~,~"q5e

Python学习!\%U8]R)V(C6A~.`

if(arr[mid]==find):Python学习}Y0kt,w ic ?(|.w

Python学习'FtGp^|B;G0t(e

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

$]O"e{ \0 Python学习f l'\5v/e;GP yT9X

return

B2Qpt"n*Gbe*F0 Python学习(j7f,k)_C~t,hw%i

else:

av)@6wk u,I2[ \5[\T0 Python学习Q7Ub$G;? s s

if(find > arr[mid]):Python学习/U$d @.h6QFah'H3f9O

F7m'{V`E#i-_ ~@/}0low = mid + 1

(S4WU _M0

JnO+dh6_{Z(f;S0else:

1[lF&w2rC+el h gq2n0 Python学习H8w?(m6kb5_6g(D

high = mid - 1Python学习 P(xjgmG:Q

d0aM{ PE\0b._| NC0print "Not Find"Python学习H2|!{Z&U&d }(z1|r]

H~fckqu g0return NonePython学习@-ag9x ~C9@#]5f

$S7Rz(C` J R,pu3Rj'S0#运行脚本Python学习j$w0`aOP

5P3D!l1l cG-uV0if __name__ =="__main__":

y:h BBX(W.Q,i%o0 Python学习DK'?/s0U9y[I8bu

halfSearch()Python学习 e7f!b+O"V\"iu

顶:31 踩:34
对本文中的事件或人物打分:
当前平均分:-0.17 (203次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.39 (189次打分)
【已经有174人表态】
29票
感动
24票
路过
15票
高兴
20票
难过
15票
搞笑
20票
愤怒
23票
无聊
28票
同情
上一篇 下一篇