0
点赞
收藏
分享

微信扫一扫

写了个二分法查找函数


今日有的网友问到这个问题,所以写了这个函数,如下:

'二分法查找函数
'功能:在数组中查找指定的值
'返回:若查到指定值则返回相应的索引,否则返回-1
'程序:by Tang 22:06 2005-4-27
Function vbBinarySearch(vb_Array() As Long, ByVal vb_Find As Long) As Long
    Dim SearchMin As Long
    Dim SearchMax As Long
    Dim i As Long
    vbBinarySearch = -1
    SearchMin = LBound(vb_Array)
    SearchMax = UBound(vb_Array)
    Do
       i = (SearchMax + SearchMin) / 2
       If vb_Array(i) = vb_Find Then
          vbBinarySearch = i
          Exit Do
       End If
       If vb_Array(i) > vb_Find Then
          SearchMax = i - 1
       Else
          SearchMin = i + 1
       End If
    Loop While SearchMax >= SearchMin
End Function

Private Sub Command1_Click()
    Dim vbArr(10) As Integer
    Dim i As Long
    For i = 0 To 10
        vbArr(i) = i + 1
    Next i
    i = vbBinarySearch(vbArr, 7)  '在数组中查找7
    MsgBox i
   
    i = vbBinarySearch(vbArr, 5)  '在数组中查找5
    MsgBox i
   
    i = vbBinarySearch(vbArr, 4)  '在数组中查找4
    MsgBox i

    i = vbBinarySearch(vbArr, 108)  '在数组中查找108
    MsgBox i   'i=-1
End Sub



' 作者:唐细刚

举报

相关推荐

0 条评论