📄 二分法查找.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "例[8-16]二分法查找数组元素"
ClientHeight = 3405
ClientLeft = 60
ClientTop = 345
ClientWidth = 5415
LinkTopic = "Form1"
ScaleHeight = 3405
ScaleWidth = 5415
StartUpPosition = 3 'Windows Default
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Form_Click()
Dim b()
Cls
b = Array(5, 11, 23, 27, 29, 32, 38, 43, 58, 77, 89)
For i = 0 To UBound(b) '输出数组元素
Print b(i);
Next i
Print
k = Val(InputBox("请输入关键值:"))
Call search(b(), LBound(b), UBound(b), k, m%) '调用子程序查找
If m <> -1 Then '下标返回值不为-1,查找成功
Print Spc(2); "查找元素的下标为:"; m
Else '下标返回值为-1,查找失败
Print Spc(2); "无该元素"
End If
End Sub
Sub search(a(), ByVal low%, ByVal high%, ByVal key, index%)
Dim mid As Integer
mid = (low + high) \ 2 '取查找区间的中点
If a(mid) = key Then
index = mid '查找到,返回查找到的下标
Exit Sub
ElseIf low > high Then '二分法查找区间没有元素,查找不到
index = -1
Exit Sub
End If
If key < a(mid) Then '查找区间在上半部
high = mid - 1
Else
low = mid + 1 '查找区间在下半部
End If
Call search(a(), low, high, key, index) '递归调用查找函数
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -