基本情報技術者試験 2005年度 = 平成17年度・秋期 午前 問14

 2分探索に関する記述のうち、適切なものはどれか。

ア 2分探索するデータ列は整列されている必要がある。
イ 2分探索は線形探索より常に速く探索できる。
ウ 2分探索は探索をデータ列の先頭から開始する。
エ n 個のデータの探索に要する比較回数は、n log2n に比例する。

解答



解説

 2分探索法は、整列済みの配列の中央に位置する要素と等しいか/大きいか/小さいかの判断を行い、探索すべき範囲を半分ずつに絞り込んでいく探索法です。
 たとえば、以下の配列a[1]~a[7]から3を探索する場合を考えましょう。

  a[1] 2 ■■
  a[2] 3 ■■■
  a[3] 5 ■■■■■
  a[4] 6 ■■■■■■
  a[5] 8 ■■■■■■■■
  a[6] 8 ■■■■■■■■
  a[7] 9 ■■■■■■■■■

 中央に位置するa[4]の値は6ですから、探索すべき範囲はa[1]~a[3]に絞られます(もし探索すべき値が6であれば、この時点で探索は終了です)。このように、中央値との比較を行って探索すべき範囲を半分に絞っていき、その値が見つかって探索に成功するか、あるいは探索すべき範囲がなくなって探索に失敗するまで繰り返します。
 ここでは、データが昇順に並んでいる例を示しましたが、もちろん降順に並んでいる場合も同様に探索を行うことができます。いずれにせよ、探索対象のデータ列は整列されている必要があります。

 2分探索の時間計算量のオーダはlog2n であり、線形探索の時間計算量のオーダはn です。一般的には、2分探索のほうが高速ですが、探索の対象となるデータ数が少ない場合に限っては、線形探索のほうが高速です。

 2分探索は探索をデータ列の中央から開始します。先頭から開始するのは、線形探索です。

 n 個のデータの探索に要する比較回数は、平均でlog2n 回です。


BohYoh.comトップページへ