手机版

信息技术奥林匹克竞赛_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文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)