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

平成22年 春期 基本情報技術者 午後 問08
問08   必須問題

 次のプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。

〔プログラムの説明〕

 プログラム Sort は配列に格納された整数値のデータを再帰的に分割し, 分割したデータの値の大小を比較しながら併合していくことでデータを昇順に整列するプログラムである。 Sort は併合に副プログラム Merge を使用する。

(1) num 個( num ≧1)のデータを配列 list に格納して Sort を呼び出すと, 整列された結果が配列 list に返却される。

(2) Sort では,次の手順で配列 list に格納された整数値のデータを整列する。

@ 配列 list に格納されているデータを,先頭から num÷2個と残り num - num÷2個とに分割して, 二つの配列 slist1 と slist2 に格納し,それぞれの配列に対して再帰的に Sort を呼び出す。 ここで,配列 slist1 と slist2 の大きさは省略されているが,必要な領域は確保されている。 この再帰的な呼出しは,引数で渡される配列 list のデー夕の個数が1になると終了する。

A Merge を使用し,二つの配列 slist1 と slist2 を併合して一つの配列 list にする。

(3) Merge では,次の手順で,整列済の二つの配列 slist1 と slist2 を併合し, 整列した一つの配列 list を作成する。

@ 配列 slist1 又は slist2 のどちらか一方の要素がなくなるまで,次のAを繰り返す。

A 配列 slist1 と slist2 の要素を順に比較して,小さい方から順に配列 list に格納する。

B 配列 slist1 又は slist2 の残った要素を配列 list に追加する。

(4) Sort と Merge の引数の仕様を表1,2に示す。配列の添字は0から始まる。

      表1 Sort の引数の仕様
 引数名/返却値  データ型  入力/出力     意味 
 list[]  整数型  入力及び出力  データが格納されている1次元配列  
 num   整数型    入力  配列 list のデータの個数 

      表2 Merge の引数の仕様

 引数名/返却値  データ型  入力/出力     意味 
 slist1[]  整数型  入力  整列済のデータが格納されている
 1次元配列  
 num1  整数型  入力  配列 slist1 のデータの個数 
 slist2[]  整数型  入力  整列済のデータが格納されている
 1次元配列 
 num2  整数型  入力  配列 slist2 のデータの個数 
 list[]  整数型  出力  併合したデータを格納する1次元配列  

 次のデータを例にして,整列処理の流れを図に示す。

  配列 list のデータ:5,7,4,2,3,8,1

    図 整列処理の流れ

〔プログラム〕

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

a に関する解答群

ア num ≧ 0       イ num ≧ 1

ウ num > 1       エ num > 2

b に関する解答群 ア list[i]          イ list[num+i]

ウ list[num1+i]       エ list[num2+i]

c に関する解答群

ア ( i < num1 ) and ( j < num2 )      イ ( i < num1 ) or ( j < num2 )

ウ ( j < num1 ) and ( i < num2 )      エ ( j < num1 ) or ( i < num2 )

オ ( i + j ) < ( num1 + num2 )      カ ( i + j ) ≦ ( num1 + num2 )

キ ( i + j ) > ( num1 + num2 )      ク ( i + j ) ≧ ( num1 + num2 )

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

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

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

基本情報技術者試験


設問2 最初に与えられた配列 list のデータが次の場合, プログラム Sort の α における配列 list の内容の移り変わりとして正しい答えを,解答群の中から選べ。

   配列 list のデータ:3,8,2,7,5,1

 なお,解答群の“→”は,内容が左から右へ移り変わっていくことを示している。

解答群

ア 2 → 3 → 2,3 → 2,3,8 → 1 → 5 → 1,5 → 1,5,7 → 1,2,3,5,7,8

イ 3 → 8 → 3,8 → 2,3,8 → 7 → 5 → 5,7 → 1,5,7 → 1,2,3,5,7,8

ウ 2,8 → 2,3,8 → 1,5 → 1,5,7 → 1,2,3,5,7,8

エ 3,8 → 2,3,8 → 7,5 → 1,5,7 → 1,2,3,5,7,8

オ 2,3,8 → 1,5,7 → 1,2,3,5,7,8

カ 3,8,2 → 7,5,1 → 1,2,3,5,7,8

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

基本情報技術者試験


設問3 副プログラム Merge の β 部分と同じ結果を得る処理として正しい答えを, 解答群の中から選べ。

解答群

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

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