【VB开源代码栏目提醒】:网学会员VB开源代码为您提供Ex5_18.frm参考,解决您在Ex5_18.frm学习中工作中的难题,参考学习。
VERSION 5.00
Begin VB.Form Ex5_18
Caption = "Form1"
ClientHeight = 2385
ClientLeft = 60
ClientTop = 450
ClientWidth = 4515
LinkTopic = "Form1"
ScaleHeight = 2385
ScaleWidth = 4515
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command2
Caption = "折半查找"
Height = 375
Left = 2520
TabIndex = 7
Top = 1800
Width = 1215
End
Begin VB.TextBox Text3
Height = 390
Left = 3000
TabIndex = 6
Top = 1200
Width = 1215
End
Begin VB.TextBox Text2
Height = 375
Left = 960
TabIndex = 4
Top = 1200
Width = 1095
End
Begin VB.TextBox Text1
Height = 375
Left = 120
TabIndex = 2
Top = 600
Width = 4095
End
Begin VB.CommandButton Command1
Caption = "顺序查找"
Height = 375
Left = 600
TabIndex = 0
Top = 1800
Width = 1215
End
Begin
VB.Label Label3
Caption = "下标为"
Height = 255
Left = 2280
TabIndex = 5
Top = 1320
Width = 615
End
Begin VB.Label Label2
Caption = "b的值"
Height = 255
Left = 240
TabIndex = 3
Top = 1320
Width = 495
End
Begin VB.Label Label1
Caption = "请按从小到大的顺序输入数组元素的值,用逗号分隔"
Height = 255
Left = 120
TabIndex = 1
Top = 240
Width = 4215
End
End
Attribute VB_Name = "Ex5_18"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Function Search(a() As String, b As String) As Integer
Dim i As Integer
For i = LBound(a) To UBound(a) '循环获取每个数组元素
If a(i) = b Then '然后同被查找的元素值比较,如果相等
Search = i '将函数返回值设置为数组下标i
Exit Function
End If
Next
End Function
Private Sub Command1_Click()
Dim str() As String '定义数组
Dim b As String
b = Text2.Text
str() = Split(Text1.Text, ",") '为数组str赋值
Text3.Text = Search(str, b)
End Sub
Function Bisearch(a() As String, b As String) As Integer
Dim m As Integer, n As Integer, k As Integer
m = LBound(a)
n = UBound(a)
Do
k = (m + n) \ 2 '得到中间元素下标
If b < a(k) Then '被查找值位于前半部分
n = k - 1
ElseIf b > a(k) Then '被查找值位于后半部分
m = k + 1
Else
Bisearch = k '被查找值恰好是中间元素
Exit Function
End If
If m = n Then '只剩一个元素
Bisearch = m
Exit Function
End If
Loop
End Function
Private Sub Command2_Click()
Dim str() As String '定义数组
Dim b As String
Dim n As Integer
b = Text2.Text
str() = Split(Text1.Text, ",") '为数组str赋值
Text3.Text = Bisearch(str, b)
End Sub