Penghitungan Sort adalah algoritma penyortiran yang stabil. Hitungan Penyortiran menggunakan array tambahan Count_arr, di mana elemen i-th adalah jumlah elemen dengan nilai yang sama dengan i di array arr ARR yang akan diurutkan. Kemudian, menurut array count_arr, elemen -elemen dalam ARR diatur ke posisi yang benar.
Itu dibagi menjadi empat langkah:
1. Temukan elemen terbesar dan terkecil dalam array yang akan diurutkan
2. Statistik berapa kali setiap elemen dengan nilai saya muncul di array, dan simpan item ke-i dari array count_arr
3. Mengumpulkan semua jumlah (mulai dari elemen pertama di count_arr, setiap item dan item sebelumnya ditambahkan)
4. Lintasi secara terbalik Array asli: Tempatkan setiap elemen I di item count_arr (i) dari array baru, dan kurangi count_arr (i) dengan 1 untuk setiap elemen.
Contoh:
Salinan kode adalah sebagai berikut:
/**
* Hitungan penyortiran adalah algoritma penyortiran berbasis non-komparis.
* Algoritma ini diusulkan oleh Harold H. Seward pada tahun 1954.
* Keuntungannya adalah ketika menyortir bilangan bulat dalam kisaran tertentu,
* Kompleksitasnya adalah (N+K) (di mana k adalah kisaran bilangan bulat),
* Lebih cepat dari algoritma penyortiran perbandingan apa pun.
*
*/
fungsi countsort (arr, min, max) {
var i, z = 0, count = [];
untuk (i = min; i <= max; i ++) {
hitung [i] = 0;
}
untuk (i = 0; i <arr.length; i ++) {
hitung [arr [i]] ++;
}
untuk (i = min; i <= max; i ++) {
while (count [i]-> 0) {
arr [z ++] = i;
}
}
return arr;
}
// tes
var i, arr = [];
untuk (i = 0; i <100; i ++) {
arr.push (math.floor (math.random () * (141)));
}
Countsort (arr, 0, 140);