アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20230122 実施分 問9

異なる n 個のデータが昇順に整列された表がある。この表を m 個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。次に,当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで,m は十分に大きく,n は m の倍数とし,目的のデータは必ず表の中に存在するものとする。
答えを選ぶ

出典:基本情報技術者試験 科目A免除 修了試験 20230122 実施分 問9(問題文は IPA の公開問題。解説は当サイト作成)

答えと解説を見る

正解:イ

覚える知識

ブロック分割探索の平均比較回数

ブロック探索の平均比較回数は、ブロック間探索(n/m)/2とブロック内探索m/2の和である。

この問題で必要なこと

ブロック数n/mの最後尾を線形探索する平均比較は(n/m)/2、ブロック内は平均m/2。合計m/2+n/(2m)。

ひっかけ

最悪比較回数(m+n/m)を平均と取り違えさせる。

この知識の出題:本試験系 0 回・免除試験 1 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「探索アルゴリズムと計算量」で学ぶ