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

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

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

KR8~D/M6AO0# -*- coding:utf8 -*-Python学习{2w+Lh4c^#](W0q

Python学习0Ae+l j*M#sq

import osPython学习 x:bCd3IO

Python学习0c n'i+\pfI'q

import sysPython学习,kt/f!~*aV

/qo.f&V;S_7D cfj(`0import math

AYT3H7g5w/V2z'k0

9\2W [.S,Y+g^$Y.F0def halfSearch(arr=[1,2,3,4,5],find = 1):

#N@LZOxu0 Python学习1e^1zcDr-H

'''''

;hP;|!y;C$vC*cr3Zx0

CSi9L0B*W:X%\oN0折半查找,2分查找

NT3XO:L }(q {i0 Python学习k_3PFc4~]

折半查找的前提是数据是有序的

1m,I6U-A{ Oo q0 Python学习;^ y Y Z?-{

算法:mid = Math.floor(low+hight/2)Python学习h9pdp5|3W1{9wO

Python学习v}6SR;El6~V

'''Python学习*aw!at)BB*xr@

Python学习,[d8Z1]Bf)Cb

mid = 0

[2r+w'N'o0}8c0

hwbuk;IrV0low = 0Python学习.cACkG.f"Pm

Python学习cf*KZen];QY\

high = len(arr) - 1Python学习Hm j u9B

G)C%wB+S.c6_K3tc0while(low<=high):

2x~\5m{^&h y^(p0 Python学习"mpK [)Wob"F sW)@"k

print low,highPython学习(S[4AH-F&~

9F9xZ#M'E~~J0mid = (low + high)/2

p+L/K7ac9R Iv{$cK0 Python学习f)E a9I4t

print midPython学习v:x,UD3a!EK

&W#M,Fk1K$x4B0if(arr[mid]==find):Python学习X"B.vs%^b

Python学习Q9t1atW3k

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

4H0h?o,K C0Z~n0

jVT&eE7k9`|U0returnPython学习4LLa/zq!V6T'g

\*e/J:y,Oul0else:

6l^ Qz C,o0 Python学习UM'ji3a;b5P,`C

if(find > arr[mid]):Python学习X3X-wUy

Python学习9E7P+`4bB a!xz

low = mid + 1

T}aLK u K0 Python学习z$]5Sn J9N6r

else:Python学习!X+@_p D

w I_Vg0high = mid - 1

/R dexq3P0 Python学习*|8ek%Pb)P

print "Not Find"

2z0FLH Pq ztG0

c"]oVK6I2B+j*q0return None

_$v;\Br/Q0

%}*I(U"^%rg S0#运行脚本Python学习J K9Dr:Z8]hq

4z3}%x8[z0if __name__ =="__main__":

$GlR@;A%i1i0

&kLv"Z3j;x-h p0halfSearch()

%|QEB3t"X)P g0
顶:30 踩:34
对本文中的事件或人物打分:
当前平均分:-0.15 (197次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.4 (184次打分)
【已经有169人表态】
29票
感动
24票
路过
14票
高兴
20票
难过
14票
搞笑
19票
愤怒
22票
无聊
27票
同情
上一篇 下一篇