アルゴリズムとプログラミング
基数ソートの動作原理として最も正しいものはどれか。
ア.数値の各桁を下位桁から順に処理し、各桁の値でグループ分けして並べ替えを繰り返す正解
イ.配列をランダムに分割して再帰的に並べ替える
ウ.数値の最大桁から順番に比較して並べ替える
エ.全要素を一度ヒープ構造に変換してから取り出す
解説
基数ソートは「郵便局の仕分け作業」そのもの。まず下3桁(市区町村)で仕分け、次に中3桁(都道府県)、最後に上の番号で仕分けと、桁ごとに何度も仕分けを繰り返す。比較をせずに「箱に入れる」だけなので、データ量が多くなっても線形時間で完了する!
なぜ ア が正解か
基数ソートの手順(LSD: Least Significant Digit方式):①一の位の値でバケット(0-9)に振り分け、順番に取り出す②十の位でバケットに振り分け、順番に取り出す③以上を最大桁まで繰り返す。各ステップで安定なカウンティングソートを使うことがポイント。計算量はO(d×n)(dは桁数)で、dが定数なら実質O(n)の線形時間。
出典: AI生成問題(学習用)