バイナリサーチのロジック


ロジック:

  1. バイナリサーチは、ソートされたリストや配列でのみ使用できます。まず、探索対象のリストを昇順または降順にソートします。
  2. 探索範囲の開始点を0、終了点をリストの要素数-1とします。
  3. 探索範囲の中央の要素を取得します。中央のインデックスは、(開始点 + 終了点) / 2 で計算できます。
  4. 中央の要素と目的の要素を比較します。 a. もし中央の要素が目的の要素と一致する場合、探索は成功です。中央のインデックスを返して終了します。 b. もし中央の要素が目的の要素よりも大きい場合、探索範囲を中央より前の部分に変更します。終了点を中央-1に更新します。 c. もし中央の要素が目的の要素よりも小さい場合、探索範囲を中央より後の部分に変更します。開始点を中央+1に更新します。
  5. 新しい探索範囲でステップ3に戻ります。探索範囲が空になるまで繰り返します。

コード例:

def binary_search(arr, target):
    start = 0
    end = len(arr) - 1
    while start <= end:
        mid = (start + end) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            start = mid + 1
        else:
            end = mid - 1
    return -1

上記のコードは、バイナリサーチを実装する基本的な例です。arrはソートされたリストや配列であり、targetは探索対象の要素です。関数は目的の要素が見つかった場合はそのインデックスを返し、見つからなかった場合は-1を返します。

このロジックとコード例を使って、効率的な要素の検索やソートされたデータセットの操作を行うことができます。