6個の数値180,315,282,410,645,525を並べ替える。
手順1〜4は途中までの手順を示したものである。
手順4まで終わったときの結果はどれか。
手順1 並びの左側から順に,数値の1の位の値によって0〜9のグループに分ける。
手順2 次に0のグループの数値を左側から順に取り出して並べ,その右側に1のグループ,以下順に2〜9のグループの数値を並べていく。
手順3 手順2で得られた数値の並びの左側から順に,数値の10の位によって0〜9のグループに分ける。
手順4 手順2と同様に,0のグループの数値から順に並べる。
ここで,グループ内では,処理が行われた数値を左側から順に並べるものとする。
正答3
解説
正解は3です。
基数ソートの途中経過をたどる問題です。
手順1・2で1の位による並べ替えを行い、手順3・4でその結果を10の位で並べ替えます。
グループ内では、取り出した順(左から順)を保ったまま並べます。
【計算】
手順1では、1の位で分けると、0のグループが180と410、2のグループが282、5のグループが315、645、525になります。
手順2の結果は、180、410、282、315、645、525です。
手順3では、10の位で分けると、1のグループが410と315、2のグループが525、4のグループが645、8のグループが180と282になります。
手順4の結果は、410、315、525、645、180、282です。
【選択肢別解説】
1:× これは100の位による並べ替えまで終えた、最終的な昇順の結果です。
手順4の時点ではまだ100の位を処理していません。
2:× 1の位、10の位の順に処理した結果と一致しません。
例えば410と315は10の位がどちらも1なので、手順2の並び順どおり410が先になります。
3:○ 上の【計算】のとおり、10の位の小さいグループから順に並べた結果と一致します。
4:× これは降順に並べた結果です。
手順では0のグループから順に並べるので、降順にはなりません。
【ポイント】
基数ソートは、下の桁から順に安定な振り分けを繰り返す整列法です。
同じグループ内では直前の並び順を保つ点が、正しい結果を得る鍵になります。