線形探索|科目A-1(応用情報技術者) 令和7年 秋期午前試験 問6
出典:令和7年秋期 午前 問6
分野:アルゴリズムとプログラミング / アルゴリズム
異なるn個のデータが昇順に整列された表がある。この表をm個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。次に,当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで,mは十分大きく,nはmの倍数とし,目的のデータは必ず表の中に存在するものとする。
- ア:m + n/m
- イ:m/2 + n/2m
- ウ:n/m
- エ:n/2m
TSUNAGARU-ADVICE
まず押さえたいこと
この探索方法では、まず各ブロックの末尾データだけを調べて目的のブロックを特定し、その後でブロック内を線形探索するという2段階で比較回数を考えます。全体の平均比較回数は、それぞれの段階で必要になる平均比較回数を足し合わせます。
迷ったときの判断軸
ブロック数はn / m、1ブロック当たりのデータ数はmです。線形探索の平均比較回数は、対象がその範囲内に均等に存在すると考えると要素数のおよそ半分になります。ブロック探索とブロック内探索の両方について、この考え方を適用するのがポイントです。
科目Bにつなげるために
特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、探索アルゴリズムを比較回数や計算量の観点で評価する習慣を付けましょう。ブロック分割の大きさによって探索効率がどう変わるかを考えることは、データ構造やアルゴリズム設計の問題にもつながります。

表全体のデータ数はn個で、1ブロック当たりm個のデータに分けるので、ブロック数はn/m個です。
まず、各ブロックの最後尾のデータだけを線形探索して、目的のデータが含まれるブロックを探します。ブロック数がn/m個あるので、平均比較回数はおよそ次のようになります。
ブロック探索の平均比較回数 = n/2m
次に、見つけたブロック内を線形探索します。1ブロックにはm個のデータがあるので、ブロック内探索の平均比較回数はおよそ次のようになります。
ブロック内探索の平均比較回数 = m/2
したがって、全体の平均比較回数は、次の式で表せます。
m/2 + n/2m
したがって、イが適切です。