基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成16年 春期 基本情報技術者 午後 問04
問04   整列を行う副プログラム

〔プログラムの説明〕

1次元配列に連続して格納されている 2n 個の整数型データ (n は整数で n > 0)に対して,併合を n 回繰り返すことによって整列を 行う副プログラム mergeSort である。

(1) 配列 input[] の要素を昇順に並べて配列 output[] に格納する。

(2) 各配列の添字は 0 から始まる。

(3) 副プログラム mergeSort の引数の仕様を表に示す。

   表 mergeSort の引数の仕様

変数 入力/出力 意味
input[] 整数型 入力 整列するデータ
output[] 整数型 出力 整列結果を格納する領域
size 整数型 入力 配列の要素数

図は,1次元配列に格納されている 8 個のデータを3回の併合で整列する例である。

〔プログラム〕

基本情報技術者試験


設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。

a に関する解答群

ア a_yet = false and b_yet = false

イ a_yet = false or b_yet = false

ウ a_yet = true and b_yet = true

エ a_yet = true or b_yet = true

b に関する解答群

ア b_idx ← span_idx

イ b_idx ← span_idx + span_size

ウ b_idx ← span_idx + span_size ÷ 2

エ b_idx ← span_idx + span_size × 2

オ write_idx ← 1

カ write_idx ← a_idx + 1

キ write_idx ← b_idx + 1

ク write_idx ← write_idx + 1

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを,解答群の中から選べ。

次のデータを入力データとして,副プログラム mergeSort を実行すると, 回の併合の処理を実行するが, 実際は 回目の併合が終了した時点で データは昇順に並んでしまう。

副プログラム mergeSort をデータが昇順に並んだ時点で終了させるためには, 次の変更1〜3を加えればよい。 ただし,変更後のプログラム中の変数 ordered は,論理型で宣言されているものとする。

c,d に関する解答群

ア 1    イ 2    ウ 3    エ 4    オ 5

e に関する解答群

ア output[write_idx − 1] ≦ output[write_idx]

イ output[write_idx] ≦ output[write_idx + 1]

ウ output[write_idx − 1] > output[write_idx]

エ output[write_idx] > output[write_idx + 1]

オ temp[write_idx] ≦ output[write_idx]

カ temp[write_idx − 1] ≦ temp[write_idx + 1]

キ temp[write_idx] > output[write_idx]

ク temp[write_idx − 1] > temp[write_idx + 1]

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]