
基本情報技術者試験 令和6年度 公開問題 科目B、全6問のうちの問4。
出典:令和6年度 基本情報技術者試験 公開問題 科目B 問4(プログラムは原本の画像を文字に書き起こし、字下げは 1 段を空白 2 つで表した。空欄は[ ]で表した)
次の
関数 merge は,
関数 merge を
○整数型の配列: merge(整数型の配列: data1, 整数型の配列: data2)整数型: n1 ← data1の要素数整数型: n2 ← data2の要素数整数型の配列: work ← {(n1 + n2)個の 未定義の値}整数型: i ← 1整数型: j ← 1整数型: k ← 1while ((i ≦ n1) and (j ≦ n2))if (data1[i] ≦ data2[j])work[k] ← data1[i]i ← i + 1elsework[k] ← data2[j]j ← j + 1endifk ← k + 1endwhilewhile (i ≦ n1)work[k] ← data1[i]i ← i + 1k ← k + 1endwhilewhile (j ≦ n2)work[k] ← data2[j] /*** α ***/j ← j + 1k ← k + 1endwhilereturn work
- ア実行されない
- イ1 回実行される
- ウ2 回実行される
- エ3 回実行される
答えと解説を開く
正解はイです。
n1 = 2、
ほかの選択肢が違う理由
- アdata2 の
4 は 最初の while では 写されずに 残ります。 残りを 写す 3 つ目の while で α の 行が 実行されます。 - ウ最初の
while の 中で data2 の 1 を 写した 分を 数えています。 α の 行は 3 つ目の while の 中だけに あり、 data2 の 1 は そこを 通りません。 - エdata2 の
要素は 2 つしかないので、 α の 行が 3 回実行される ことは ありません。
仕組み
併合 (マージ) は、
片方を