IT用語集 › プログラミング › 二分探索

二分探索

プログラミング Svenska → 更新: 2026-10-20

ソート済みの列から要素をO(log n)で見つける方法。毎回、探索範囲を半分に絞る。中央を調べて、左か右へ進むだけだ。

情報科学の入門講義で必ず出てくる例題。ところが実装は、よく間違えられることで悪名高い。Knuthは、ほとんどの変種に細かい off-by-one エラーがあると指摘した。JDKのArrays.binarySearchにはオーバーフローのバグが9年間潜んでいた(2006年に発見)。git bisectは、コミット履歴に対する二分探索だ。一般化したものとして、C++ STLのlower_bound/upper_boundが挿入位置を見つける。使えるのはソート済みのデータだけである。

← 用語集に戻る