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

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

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

3y@fe$q0# -*- coding:utf8 -*-Python学习yPQ$y'R3i!I8~_'V

Python学习{S-^ q+l

import os

zw @2a;r2u9Z k!kh0 Python学习,s)pm!W6q%uO

import sys

+p)Ro"YK]w._{3w|0 Python学习C6~6EQ3y c/L

import math

+H:\y[_4Hk&n Zw0 Python学习/_c9Q4y e4r2I

def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习D3P.Ac1V'F@

Python学习zTt7U1~h

'''''Python学习 lR4?&K^/w

Python学习4C1nPz*w2G;o]ED

折半查找,2分查找Python学习Ba6Ja'p\}

Python学习|+V~d:h

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

3R#\3DC$g0

j/w%H5w8v.v Z"d:]z0算法:mid = Math.floor(low+hight/2)Python学习 xNGti6Y

$XG{*~`n4h0'''Python学习3E.v:pb1d

Python学习@)ShU-s%? j

mid = 0

8T8sq^Xf#J9dA0 Python学习-b7DTU b~S

low = 0Python学习p1W7\a$FY J

)G|qmZL ]3oIx0high = len(arr) - 1Python学习b e[/t(sB

Python学习!F^(ara

while(low<=high):

,q pz9zE3mun0 Python学习Q{qL:?6vK;u

print low,high

7w&E0_"v:Yz6e0

]K?N c3o*L0mid = (low + high)/2Python学习aG2|9} X(?3ZV's

Python学习&kJX+V9h k g

print mid

~!@&f-EF)B0

`0^U GL0if(arr[mid]==find):Python学习RKe} vS2m#b.q

Python学习x2W8j}I/_(?%rrS

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

S3T#ZH8mz0 Python学习s$W"d6g_#sj&O&R

returnPython学习ANB"w P ^9bjL

{K-F1s%V/`0else:

5j Ytj8mM { C5q0

@t'p)`_)o0if(find > arr[mid]):

;NEib p#i R)o0 Python学习4LSY:m([2DS2w4|

low = mid + 1Python学习/L(d0TW(zJ(}2`

Python学习4]j/j@^-j |

else:

w9T#W"]VaI3Z0

HOC*I bR-e*?0high = mid - 1Python学习8o"i4MQ9@2i/T

Python学习'Z(H2V Rm

print "Not Find"

0Na5V P`Q4c R ~0

wm)\0m9{ E0return NonePython学习"l&~K\sf

!N&q*@|d_-r0#运行脚本Python学习d E"f}r#z

Python学习a7AG1tS {

if __name__ =="__main__":

OOG:_ UzY0

;Pxmq(r%u0KTQ0halfSearch()Python学习3Sh2_2h8\ F x

顶:35 踩:40
对本文中的事件或人物打分:
当前平均分:-0.14 (235次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.51 (222次打分)
【已经有195人表态】
35票
感动
27票
路过
17票
高兴
22票
难过
16票
搞笑
22票
愤怒
26票
无聊
30票
同情
上一篇 下一篇