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

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

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

0F N{;e M;K7~&n2iH0# -*- coding:utf8 -*-

@&eZ gc2x oYi0 Python学习i2V2H8tcft k{K

import os

1Q'V?aXg0 Python学习-]!c{ NBvux4g2|

import sysPython学习|a$QX3^$[/C

Python学习 {KezF3V6u

import mathPython学习V9H @d,Ci#u

Python学习H1A MUS;g

def halfSearch(arr=[1,2,3,4,5],find = 1):Python学习[Op/z!A

Python学习Yw'yuP6u-^-o(D

'''''

Zv.k` p*m(?X0 Python学习i6o/K:a0^2Bx

折半查找,2分查找

J?tr6o.\:~!`0 Python学习&i3Bx7}y

折半查找的前提是数据是有序的Python学习xC.Cb-{

-c;~t.} U0算法:mid = Math.floor(low+hight/2)

,d x2BC2Q0

gnE:Oi DEGA0'''

K$ic#?d-y1a4_0 Python学习k,o[OZ2z

mid = 0Python学习$Q\ e;N5e&r8U

'Rj vAW8V @ U+~9X9d0low = 0Python学习z9K$]p FkT

Python学习z'K(WnU ~(E A

high = len(arr) - 1

c#U5A1rwcO*{0

m;O.k#CaY0while(low<=high):Python学习.epM'} a/Vbl

k.cTFy.L4I fE0print low,highPython学习&dw$\F#euWl Y

F Xcm},h"u0mid = (low + high)/2

g sq!gHv0

M-Yb0WDh#C `0print midPython学习i}?~6e f C'IK H

Python学习Kf+[SaL'UH1FK

if(arr[mid]==find):Python学习 {+Yy ]:Ve/X(kJ/s7WW

Python学习 Mz)C#NeA1y0Q"@ _ L

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

q1J4L:HiZk5S1@c0

!uq2K-a(qO(f0returnPython学习p'DGLMr3G p }

Python学习zK#?(U/t5im[

else:

8t7{4C4V'{0 Python学习ahl1?k2A

if(find > arr[mid]):Python学习N\p'n ^ cs

Python学习;l|o$^'wBT

low = mid + 1

8^ qHO4Ig@ S0 Python学习a5S7z Jc0lbM

else:

rkx2O3]+f[C}0 Python学习Qp`L^J/l?

high = mid - 1Python学习0kXEc3e,n*UK

T#?u%NZ dd b|0print "Not Find"Python学习\)KE)o@ ~1E

h)K3J,H/^L6j0return NonePython学习 ^E-P1l2n.qv

k`1c|9C RgR7{0#运行脚本Python学习*j(P X2Y4p2P Bl^XN

wd4mBc+_0if __name__ =="__main__":

~g!F _W K,^0

;v;y&@P;i&Vb)b0halfSearch()Python学习!Vd.g X:K;_'u/u _y

顶:32 踩:36
对本文中的事件或人物打分:
当前平均分:-0.21 (217次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.45 (201次打分)
【已经有180人表态】
31票
感动
25票
路过
15票
高兴
20票
难过
16票
搞笑
20票
愤怒
24票
无聊
29票
同情
上一篇 下一篇