カウントソートは、安定したソートアルゴリズムです。 Count Sortingは追加の配列count_arrを使用します。ここで、i番目の要素は、ソートされる配列arrのiに等しい値を持つ要素の数です。次に、配列count_arrによれば、arrの要素は正しい位置に配置されます。
4つのステップに分かれています。
1.ソートされる配列内の最大および最小の要素を見つける
2。統計Iの値を持つ各要素の回数が配列に表示され、配列count_arrのi番目のアイテムを保存します
3.すべてのカウントを蓄積します(count_arrの最初の要素から始まり、各アイテムと前のアイテムが追加されます)
4.元の配列を逆にトラバースします。各要素を新しい配列のcount_arr(i)項目に配置し、各要素に対してcount_arr(i)を1で削除します。
例:
コードコピーは次のとおりです。
/**
*カウントソートは、比較ベースのソートアルゴリズムではありません。
*このアルゴリズムは、1954年にハロルドH.スワードによって提案されました。
*その利点は、整数を特定の範囲内でソートするとき、
*その複雑さはο(n+k)(kは整数の範囲です)、
*比較ソートアルゴリズムよりも速い。
*
*/
function countsort(arr、min、max){
var i、z = 0、count = [];
for(i = min; i <= max; i ++){
count [i] = 0;
}
for(i = 0; i <arr.length; i ++){
count [arr [i]] ++;
}
for(i = min; i <= max; i ++){
while(count [i] - > 0){
arr [z ++] = i;
}
}
arrを返します。
}
// テスト
var i、arr = [];
for(i = 0; i <100; i ++){
arr.push(math.floor(math.random() *(141)));
}
CountSort(arr、0、140);