IT基礎・コンピュータの用語一覧へ
このページの目次

二分探索とは?

最終更新:2026/08/18

3秒でわかる

整列済みのデータの中央と比べ、半分ずつ候補を捨てながら目的の値を探す方法。100万件でも20回ほどの比較で目的の位置にたどり着けます。

もう少し詳しく

どういうものか

二分探索は、あらかじめ並べ替えられたデータの真ん中を見て、探している値がそれより大きいか小さいかを判断し、片側を丸ごと捨てる操作を繰り返す探索方法です。1 回の比較で候補が半分になるため、100 万件でも 20 回ほど、10 億件でも 30 回ほどの比較で目的の位置にたどり着きます。

なぜ必要か

先頭から順に見ていく線形探索は、件数が 10 倍になれば時間も 10 倍になります。二分探索は 10 倍になっても比較回数が 3 回ちょっと増えるだけです。この差は件数が大きいほど効き、データベースインデックスや、辞書引き、コミット履歴から不具合の混入地点を探す git bisect まで、同じ考え方が広く使われています。前提として並べ替えが要る点だけが条件です。

具体例

def binary_search(a, target): lo, hi = 0, len(a) - 1 while lo <= hi: mid = (lo + hi) // 2 if a[mid] == target: return mid if a[mid] < target: lo = mid + 1 else: hi = mid - 1 return -1 data = [3, 8, 12, 19, 24, 31, 47] print(binary_search(data, 24)) # 4

探索の様子は下のとおりです。

[3, 8, 12, 19, 24, 31, 47] 中央19 -> 24は右 [24, 31, 47] 中央31 -> 24は左 [24] 一致

つまずきやすいところ

無限ループがもっとも多い失敗です。lo = mid と書くと候補が減らない場合があり、必ず mid + 1mid - 1 にします。条件を lo < hi にすると候補が 1 個になった時点で調べずに終わるため、要素 1 個の配列で見つからない不具合になります。そして最大の前提の見落としが並べ替えで、未整列のデータに対しても実行はでき、エラーも出ないまま「見つからない」と返します。境界の確認は、要素 0 個、1 個、先頭、末尾の 4 つを必ず試します。

似た用語との違い

方法前提計算量
線形探索なしO(n)
二分探索整列済みO(log n)
ハッシュ探索ハッシュ表を作る平均 O(1)

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地二分探索IT基礎

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

135レッスン
コース

アルゴリズム道場 カメ師範の十の巻

10レッスン
コース

基本情報技術者(FE)対策

79レッスン
コンピュータサイエンスコースの全編を見る