Javascript順序付けアルゴリズムのカウント順序の例


カウント順序(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);