※本情報は解説作成時点のもので、閲覧時点では法改正等により情報が変更になっている場合がございます。あらかじめご理解いただければ幸いです。
正解は「B.1回実行される」です。
merge({2,3},{1,4}) の実行過程を追うと、/*** a ***/ の行は最終段階で1回だけ実行されます。
この記事では、基本情報技術者試験(FE)試験(令和6年度)科目Bで出題された第4問「マージ処理の実行回数」について、試験対策の観点からわかりやすく解説します。
merge処理の流れ
小さい方を取り出して配列workへ格納
data1={2,3}、data2={1,4} として処理を追います。
- ① 2 と 1 を比較 → 1 を格納(j=2)
- ② 2 と 4 を比較 → 2 を格納(i=2)
- ③ 3 と 4 を比較 → 3 を格納(i=3)
この時点で i=3 となり、i > n1(2)なので最初の while を終了します。
その後の処理
data1 はすべて処理済みなので、data2 に残っている要素だけを追加します。
- data2 の 4 が未処理
よって、/*** a ***/ の行(work[k] ← data2[j])はこのとき1回だけ実行されます。
問われているポイント
この問題では、マージソートの併合処理の流れを正しくトレースできるかが問われています。
インデックス i・j・k の動きを丁寧に追うことが重要です。
気を付けてほしい点(勘違いしやすいポイント)
- 配列がすべて処理済みになった時点でwhileは終了する
- 残り要素のコピー処理が何回実行されるかを数える
補足
merge処理は基本情報技術者試験(FE)試験の頻出アルゴリズムです。実際に値を書き出して確認する癖をつけましょう。
基本情報技術者試験(FE)試験での出題パターン
基本情報技術者試験(FE)試験では、アルゴリズムの動作回数や実行結果を問う問題が頻出です。
特にマージソートや探索処理は重要テーマです。
この知識が使われている問題
まとめ
- マージ処理は小さい方を順に取り出す
- 残り要素のコピー回数を正確に数えることが重要