VB二分法问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 03:03:10
a数组是递增排列数组,二分法查找代码如下
x = Val(Text1)
m = LBound(a): n = UBound(a)
Do
abc: l = Int((m + n) / 2)
If x = a(l) Or m > n Then Print "找到": GoTo def
If x > a(l) Then m = l + 1 Else n = l - 1
If m > n Then Print "没有找到": GoTo def
Loop
def:

能帮忙解释一下这段代码吗? 尤其是为什么会出现m>n 还有goto def 那里
谢谢

x = Val(Text1) 'text1中数值赋值给X
m = LBound(a): n = UBound(a) 'm为数组a下维,n是上维
Do '循环开始
abc: l = Int((m + n) / 2) 'goto跳转标签abc 上维+下维和的一半赋值给变量L
If x = a(l) Or m > n Then Print "找到": GoTo def ’如果 数组a中a(l)元素=x 或者
If x > a(l) Then m = l + 1 Else n = l - 1 '因为这里当x大于a(l)时m会被
增大,反之n减小 所以就有机会出现m>n的情况
If m > n Then Print "没有找到": GoTo def'跳转 相当于退出do循环 可以用 exit do来替换goto 语句
Loop
def: