二分探索法のアルゴリズムは以下のようになります:
- 探索範囲の始点と終点を設定します。通常はリストの最初と最後の要素です。
- 探索範囲の中央の要素を取得します。
- 中央の要素と目標要素を比較します。
- もし中央の要素が目標要素と等しければ、検索成功です。
- もし中央の要素が目標要素よりも小さければ、探索範囲を中央よりも右側に制限します。
- もし中央の要素が目標要素よりも大きければ、探索範囲を中央よりも左側に制限します。
- 新しい探索範囲でステップ2に戻ります。
- 探索範囲が空になるまで繰り返します。
以下に、Pythonでの二分探索法のコード例を示します:
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1 # 要素が見つからなかった場合
# 使用例
arr = [1, 3, 5, 7, 9, 11, 13]
target = 7
result = binary_search(arr, target)
if result != -1:
print("要素が見つかりました。インデックス:", result)
else:
print("要素が見つかりませんでした。")
このコードは、ソートされたリストから目標要素を見つけるために二分探索法を使用しています。もし要素が見つかった場合はそのインデックスを返し、見つからなかった場合は-1を返します。
二分探索法は、大量のデータを持つリストや配列での効率的な検索に適しています。探索範囲が半分になるため、線形探索に比べて高速に要素を見つけることができます。
以上が、二分探索法の概要と簡単なコード例です。この方法を使えば、効果的にリスト内の要素を検索できます。