My first Magazine pemrograman-kompetitif-dasar | Page 46
3 Pencarian dan Pengurutan
1 1 2 2 3
1 2 3
5
4
5
Gambar 3.20: Tahap 9: Keluarkan isi dari setiap ember, mulai dari ember paling kiri.
1
1
2
2
3
5
Gambar 3.21: Tahap 10: Pengurutan selesai.
Implementasi Counting Sort
Ide ini dapat diwujudkan dengan menyiapkan tabel frekuensi yang berperan sebagai ”ember”.
Untuk setiap nilai elemen yang mungkin, catat frekuensi kemunculannya. Terakhir, iterasi tabel
frekuensi dari elemen terkecil sampai elemen terbesar. Tabel frekuensi dapat diimplementasikan
dengan array sederhana. Contoh implementasi Counting Sort dapat dilihat pada Algoritma 15
Contoh Kode
Algoritma 15 Algoritma counting sort .
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure C OUNTING S ORT (h)
. Catat frekuensinya
for i ← 1, N do
x ← h[i]
f table[x] ← f table[x] + 1
end for
. Tuang kembali ke h[]
index ← 1
for i ← 1, 100000 do
for j ← 1, f table[i] do
h[index] ← i
index ← index + 1
end for
end for
end procedure
Dapat diperhatikan bahwa kompleksitas counting sort adalah O(N + M), dengan M adalah
rentang nilai data. Jika M tidak terlalu besar, maka counting sort dapat bekerja dengan sangat
cepat. Lebih tepatnya, counting sort merupakan opsi yang sangat baik jika datanya memiliki
rentang yang kecil, misalnya data tentang usia penduduk yang rentangnya hanya [0, 125].
Bandingkan dengan algoritma pengurutan lain yang kompleksitasnya O(N 2 )!
36