二分探索: 半分ずつしぼって探そう
二分探索は、すでに小さい順や大きい順に並んでいるデータから、目的の値を高速に探す方法です。
辞書で単語を探すとき、真ん中あたりを開いて、前半か後半かを判断する動きに似ています。
ルール
- 真ん中の数字を見る
- 探している数字と同じなら終了
- 探している数字のほうが大きければ右半分を探す
- 小さければ左半分を探す
図で見る
コピペ用コード
def binary_search(numbers, target):
left = 0
right = len(numbers) - 1
while left <= right:
middle = (left + right) // 2
if numbers[middle] == target:
return middle
if numbers[middle] < target:
left = middle + 1
else:
right = middle - 1
return -1
print(binary_search([1, 3, 4, 5, 8], 5))