信息技术奥林匹克竞赛_VB程序设计的常用算法(6)

发布时间:2021-06-08

mid=(top+bot)/2,折半查找的算法如下:

(1)x=a(mid),则已找到退出循环,否则进行下面的判断;

(2)x<a(mid),x必定落在bot和mid-1的范围之内,即top=mid-1;

(3)x>a(mid),x必定落在mid+1和top的范围之内,即bot=mid+1;

(4)在确定了新的查找范围后,重复进行以上比较,直到找到或者bot<=top。

将上面的算法写成如下函数,若找到则返回该数所在的下标值,没找到则返回-1。

Function search(a() As Integer, x As Integer)

As Integer

Dim bot%, top%, mid%

Dim find As Boolean '代表是否找到

bot = LBound(a)

top = UBound(a)

find = False '判断是否找到的逻辑变

量,初值为False

Do While bot <= top And Not find

mid = (top + bot) \ 2

If x = a(mid) Then

find = True

Exit Do

ElseIf x < a(mid) Then

top = mid - 1

Else

bot = mid + 1

End If

Loop

If find Then

信息技术奥林匹克竞赛_VB程序设计的常用算法(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219