code228a.txt

来自「VB大全(精华版)源代码」· 文本 代码 · 共 51 行

TXT
51
字号
Option Explicit

Public Function BinSearch(ByRef SearchArray As Variant, ByVal _
    SearchFor As Variant, ByVal StartPoint As Integer, ByVal _
    EndPoint As Integer) As Integer
  Dim MidPoint As Integer

  MidPoint = ((EndPoint - StartPoint) / 2) + StartPoint
  If MidPoint < 1 Then
    BinSearch = -1
    Exit Function
  End If
  If SearchArray(MidPoint) < SearchFor Then
    StartPoint = MidPoint
    BinSearch = BinSearch(SearchArray, SearchFor, StartPoint, _
        EndPoint)
  ElseIf SearchArray(MidPoint) > SearchFor Then
    EndPoint = MidPoint
    BinSearch = BinSearch(SearchArray, SearchFor, StartPoint, _
        EndPoint)
  Else
    BinSearch = MidPoint
  End If
End Function

Public Sub Main()
  Dim Int_Values(4) As Integer
  Dim Float_Values(4) As Single
  Dim I As Integer, Match As Integer
  Const Int_Search = 3
  Const Float_Search = 4.5

  For I = 0 To 4
    Int_Values(I) = I + 1
    Float_Values(I) = I + 1.5
  Next
    Match = BinSearch(Int_Values, Int_Search, 0, 4)
  If Match > -1 Then
    Debug.Print "Value "; Int_Search; " found at: "; Match
  Else
    Debug.Print "Value "; Int_Search; " Not Found."
  End If
  Match = BinSearch(Float_Values, Float_Search, 0, 4)
  If Match > -1 Then
    Debug.Print "Value "; Float_Search; " found at: "; Match
  Else
    Debug.Print "Value "; Float_Search; " Not Found."
  End If
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?