配列内の要素を二分法検索する方法

VB言語では、次のコードを使って配列要素を2分法で検索することができます。

Function BinarySearch(arr() As Integer, target As Integer) As Integer
    Dim left As Integer
    Dim right As Integer
    Dim mid As Integer
    
    left = 0
    right = UBound(arr)
    
    While left <= right
        mid = (left + right) \ 2
        
        If arr(mid) = target Then
            Return mid
        ElseIf arr(mid) < target Then
            left = mid + 1
        Else
            right = mid - 1
        End If
    End While
    
    Return -1 ' 如果未找到目标元素,则返回-1
End Function

上記のコードにおいて、配列arrから要素targetを探索する。左端left、右端rightを探索領域の境界として設定し、探索領域の中央をmidとして設定する。左端leftと右端rightを調整し、要素targetとarr[mid]を比較することで、探索領域を絞り込んでいく。要素targetの位置が特定できればそのインデックスを返し、見つけることができなかった場合には-1を返す。

bannerAds