サンプル問題 科目B 問11

問題

次の記述中の [  ] に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。 

関数 binSort を binSort([  ]) として呼び出すと,戻り値の配列には未定義の要素は含まれておらず,値は昇順に並んでいる。 

〔プログラム〕 
○整数型の配列: binSort(整数型の配列: data) 
  整数型: n ← dataの要素数 
  整数型の配列: bins ← {n個の未定義の値} 
  整数型: i 
 
  for (i を 1 から n まで 1 ずつ増やす) 
    bins[data[i]] ← data[i] 
  endfor 
 
  return bins 

解答群 
ア  {2, 6, 3, 1, 4, 5}  イ  {3, 1, 4, 4, 5, 2} 
ウ  {4, 2, 1, 5, 6, 2}  エ  {5, 3, 4, 3, 2, 6} 

この問題は何なのか

この問題では、例えばdata[i]が2の場合、bins[2] ← 2 を実行します。これは何なんでしょう。

数字のついたバケツを順番に並べておいて、各値を同じ番号のバケツに入れたら、バケツが順番に並んでいるのだからソートされるよね、という発想です。

この問題では、バケツが6個で、入れる数も6個、未定義のバケツがなくなることが条件なので、入れる数が重複していないことが条件です。その条件で選択肢を見ると、アが答えです。

答え