binary search
二分探索
名詞
複数形: binary searches
binary search(二分探索)は、データが既にソートされていることが前提となる非常に効率的な探索手法です。リストの中央にある要素を確認し、目的の値がそれより大きいか小さいかによって探索範囲を半分に絞り込むプロセスを繰り返します。これにより、データ量が増えても探索にかかる時間が緩やかにしか増加しないため、大規模なデータセットにおいて極めて強力なパフォーマンスを発揮します。
線形探索との違いlinear search(線形探索)がリストの先頭から一つずつ順番に確認するのに対し、binary searchは範囲を劇的に削減しながら目的の値に到達します。例えば、100万個のデータがある場合、線形探索では最大100万回の確認が必要ですが、二分探索であれば最大でも約20回の確認で済みます。ただし、事前のソート(並べ替え)が行われていないデータに対しては使用できないため、データの状態に応じて使い分ける必要があります。
実装上の注意点
実装時に最も注意すべき点は、探索範囲を示すインデックスの計算です。中央値を求める際に、整数オーバーフローが発生しないように計算式を工夫することが一般的です。また、目的の値がリスト内に存在しない場合に、無限ループに陥らずに正しく探索を終了させる境界条件の設定が重要となります。
意味
関連語
algorithmarraysortingindexmidpointlogarithmcomplexityefficiencyrecursioniterationsearchdata structurebinary treepivotrangeboundarycomparisonelementvaluepointertime complexityspace complexityhalfbisectbisectionlookuplistvectorheapstackqueuehash tablenodeleafrootbranchtraversaloptimizationperformancelatencythroughputcomputationlogicbooleanbitbytememorycachepointer arithmeticsoftwareprogrammingcodingcompilerruntimevariableconstantloopconditionbranchingconvergenceintervalmagnitudescaleprecisionaccuracyheuristicdeterministicstochasticasymptoticlinearexponentialpolynomiallogarithmic