サンプル問題 [科目B]問11
問11
次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
関数 binSort を binSort( ) として呼び出すと,戻り値の配列には未定義の要素は含まれておらず,値は昇順に並んでいる。
〔プログラム〕
関数 binSort を binSort( ) として呼び出すと,戻り値の配列には未定義の要素は含まれておらず,値は昇順に並んでいる。
〔プログラム〕
- {2, 6, 3, 1, 4, 5}
- {3, 1, 4, 4, 5, 2}
- {4, 2, 1, 5, 6, 2}
- {5, 3, 4, 3, 2, 6}
分類
アルゴリズムとプログラミング » データ構造及びアルゴリズム
正解
ア
解説
このプログラムは、値がnである要素をn番目に格納することで昇順の整列を行うようになっています。仮に引数が{4, 1, 5, 6, 2, 3}だったとすると、以下のような手順で整列が行われます。
bins[4] = 4
bins[1] = 1
bins[5] = 5
bins[6] = 6
bins[2] = 2
bins[3] = 3
bins[] = {1, 2, 3, 4, 5, 6}
このプログラムでは値によって格納位置が一意に決まるので、同じ値が複数あると同じ箇所に重複して代入されてしまい、不足している数字を添字とする要素が未定義のままとなります。例えば、"4"が重複している{3, 1, 4, 4, 5, 2}を引数とした処理結果は次のとおりです。bins[1] = 1
bins[5] = 5
bins[6] = 6
bins[2] = 2
bins[3] = 3
bins[] = {1, 2, 3, 4, 5, 6}
bins[3] = 3
bins[1] = 1
bins[4] = 4
bins[4] = 4 //bins[4]の上書き
bins[5] = 5
bins[2] = 2
//bins[6]への代入がない
bins[] = {1, 2, 3, 4, 5, 未定義}
このように戻り値の配列に未定義の要素が含まれるのは、引数に値の重複がある場合です。選択肢を見ると「イ」は"4"が、「ウ」は"2"が、「エ」は"3"が重複しているためその箇所が未定義の要素となります。未定義の要素が含まれないのは、値の重複がない「ア」だけです。bins[1] = 1
bins[4] = 4
bins[4] = 4 //bins[4]の上書き
bins[5] = 5
bins[2] = 2
//bins[6]への代入がない
bins[] = {1, 2, 3, 4, 5, 未定義}