二分探索(VBA)
今回は、二分探索です。
配列の要素を検索して、指定した値が配列の何番目にあるか調べます。
相変わらずコメント無くてすみません。
Private Sub BinarySearchTest() Dim vList(1 To 5) As Long vList(1) = 1 vList(2) = 5 vList(3) = 10 vList(4) = 14 vList(5) = 20 Debug.Print BinarySearch(vList, 10) End Sub Private Function BinarySearch(ByRef vList() As Long, ByVal vTarget As Long) As Long Dim vHigh As Long Dim vRow As Long Dim vMid As Long vHigh = UBound(vList) vRow = LBound(vList) Do Until vRow > vHigh vMid = (vHigh + vRow) / 2 If vList(vMid) = vTarget Then BinarySearch = vMid Exit Do ElseIf vList(vMid) < vTarget Then vRow = vRow + 1 Else vHigh = vMid - 1 End If Loop End Function