一列に並んでいるデータの値を調べることを考えましょう.たとえば英単語を辞書で引く場合などがそうです.この時,データがあるきめられた順番で並んでいると,非常に速く調べることができます.辞書の"A","B","C"などの見出しも,単語がアルファベット順に並んでいるので役立っているのです.
データが順番に並べられている時に探索を高速化する方法としては,この見出し(index)を使う方法と,調べる範囲を半分々々にしてゆく2分探索(binary search)とが代表的です.2分探索の要領は次のとおりです.
上半分を残したことになる.
下半分を残したことになる. これをプログラムの形に直すのは簡単ですね.また,目的値が存在しない場合に,どのようになって停止するかについても考えてみて下さい.
調べる範囲が急速に小さくなってゆくこの方法では,データ全体の個数をnとするとき,log2n程度の繰返しで答が求まります.たとえばn=1000でも10回程度で求まる,高速な方法です.
26.1.6.18 探索の例 | 26.1.6.19 二分探索 | 26.1.6.20 バイナリサーチ | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Tue, 08 Jun 2004 13:21:08 JST (1879d) |