Javascript順序付けアルゴリズムのカウント順序の例
1155 ワード
カウント順序(Counting sort)は安定したソートアルゴリズムである。カウント順序は、追加の配列Count_を使用します。第iの要素は、順序付けされる配列Arの値がiに等しい要素の個数である。そして配列Count(u)に従ってAr中の元素を正しい位置に並べます。4つのステップに分けます。1.並べ替えられる配列の中で最大と最小の要素を見つける2.統計配列の各値iの要素が出現する回数は、配列Count_に預け入れられます。arrの第i項3.すべてのカウントを積算する(Count_からarrの最初の要素が開始され、各項目と前の項目が加算されます。4.逆遍歴元配列:各要素iを新しい配列のCount_に配置します。arr(i)の項目は、要素を一つ置くごとにCount_を作ります。arr(i)減算1例:
/**
* ,
* 1954 Harold H. Seward 。
* ,
* Ο(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;
}
}
return arr;
}
// test
var i, arr = [];
for (i = 0; i < 100; i++) {
arr.push(Math.floor(Math.random() * (141)));
}
countSort(arr, 0, 140);