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

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

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

,Zn3k+xb-u*M0# -*- coding:utf8 -*-Python学习!Q8m/fiAO!p+\[d

Python学习 Y5A8n4q!GjG

import os

I}3mx d8Q0

&b8X.} ^`1l*s0import sysPython学习*z,}8li!V"}6tp`M

Python学习mr3O#C9F5Wg

import mathPython学习S i.[ UO

Python学习){#W"X;[X4Dy?8D*d9r1v

def halfSearch(arr=[1,2,3,4,5],find = 1):

b3t-L G QA-[s0

7f&\[4hF3C!wL0'''''Python学习$d(S9?"c)V,VY:l

3Y7BP4Y6ay1g0折半查找,2分查找Python学习YBnC:FWh H

1Shdm!c X9a Z0折半查找的前提是数据是有序的Python学习+| s4u Oy$sd

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

a w3l7JYg0

;Y&J(G.O?S0'''Python学习;?j;PR2jEc K

'd}I6|{${3}o.i8I6_0q0mid = 0

-c p ]+`f(G0 Python学习~!s(|%o-a:v

low = 0Python学习 oHu2AN/t*t_

Python学习"t8W0W,_#F/oS

high = len(arr) - 1Python学习0HE8^Ow)`

)}0vzZ#FL5B C0while(low<=high):Python学习3kd?3e0}B@

@ a2b W3{!W"Yo0print low,highPython学习,}$U*t%uJ^

Python学习{O]GD)gz(k

mid = (low + high)/2Python学习0iN8J^}5RY4[(V

Si!HnH;G9_Ra0print midPython学习^Lwj o,LV'V

)nLe'PM.O0Hs0if(arr[mid]==find):

6UK[Q#p0 Python学习`gNS-u(U6H9u

print "find %s index is %s",(find,mid)Python学习 E8Y$o0z-A-qGA @

Python学习+~%IT[yf

return

?M7N^TX(s*\-bg0 Python学习@Dy ]A g;N'{_

else:Python学习^ ES*g*x3J&@'M!O+S

Python学习4RJ A W bp1Pu

if(find > arr[mid]):Python学习x?r/W@R{

Python学习kAW&Q N1R0O

low = mid + 1Python学习zO2DfSl

8U NO/J.mAo:DC0else:

5@J9w'PO5h{:Q0

/W_J#Ag0high = mid - 1

\^4ohQ B{y0 Python学习1^!R;SRZc6_1S$~'Y

print "Not Find"

M$\e L4K'P/kE_0 Python学习 er T)iA Il`S

return NonePython学习(CW#S)j$t.[ P|`

0IZtC |1[4|0#运行脚本Python学习6{J `8vn%}0w

~GR0g6t9DU0if __name__ =="__main__":

\p](R(j0

}KC Iv!d0halfSearch()

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