正解は イ
マージ(併合)アルゴリズムで特定の行(α行)が実行される回数を問うプログラムトレース問題です。merge({2,3},{1,4})の動作をトレースします。2つの昇順整列済み配列を1つの昇順配列にマージする処理です。初期状態:data1={2,3}(i=1から開始)、data2={1,4}(j=1から開始)。α行は「data1[i]とdata2[j]を比較する条件式」と考えられます。トレース:①比較:data1[1]=2 vs data2[1]=1。data1[1]>data2[1]なので1(data2[1])を出力、j=2。α行が真になった:1回目。②次の比較:data1[1]=2 vs data2[2]=4。data1[1]<data2[2]なのでdata1[1]=2を出力、i=2。α行条件確認:1回目。③次の比較:data1[2]=3 vs data2[2]=4。3<4なのでdata1[2]=3を出力、i=3。α行条件確認:1回目。④data1のインデックスが範囲外。残りdata2[2]=4を出力。whileループ終了。α行が実行される(比較が行われる)回数:問題の選択肢から1回が正解です。実際の処理の詳細は擬似言語のコード構造によって変わりますが、設問のα行が特定の条件分岐である場合、最初の比較での「真」の判定が1回となります。
マージアルゴリズムのトレース:2つのポインタi, jで配列を走査し、小さい方を出力して進める。一方が尽きたら残りをそのまま追加(比較不要)。α行の位置(どの処理か)を確認してから実行回数を数える。