Table of Contents
ソートをカウントする 特定の範囲内の整数をソートするのに使用される効率的なソートアルゴリズムです。各値の発生回数をカウントし、ソートされた配列の各要素の位置を計算することによって動作します。この方法は、入力データの範囲がソートする要素の数よりも大幅に大きくない場合に特に便利です。
ソートのカウント方法
アルゴリズムは、入力データ内の各値の頻度を格納するカウント配列を作成することで始まります。このカウント配列は、ソートされた出力の各要素の実際の位置を含むように変更します。最後に、カウント配列に基づいて、要素を正しい位置に配置することでソートされた配列を作成します。
計算例
配列があるとします: [4, 2, 2, 8, 3, 3, 1]. 値の範囲は 1 から 8. カウント処理は、カウント配列で結果します。
[0, 1, 2, 2, 2, 1, 0, 0, 1]
これは各数の頻度を示します。アルゴリズムは、その位置を決定するために累積数を計算します。
[0, 1, 3, 5, 6, 6, 6, 6, 7, 7, 7, 8, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
これらを使うと、ソートされた配列が: [1, 2, 2, 3, 3, 4, 8] になります。
応用シナリオ
ソートをカウントする 既知の範囲内で入力データが整数で構成されるシナリオに適しています。 多くの場合、使用されます。
- 生徒の成績をソート(例:0-100)
- 頻度解析におけるデータの整理
- 組込みシステムに小さな整数を並べ替える
- サブルーチンとしてラデックスソートを実装
その効率は、要素の数に相対的な範囲のサイズに依存します。 範囲が小さい場合は、ソートをカウントすると、クイックソートやマージなどの比較ベースのアルゴリズムが出力できます。