You are on page 1of 9

Pengkajian Algoritma Pengurutan-Tanpa-

PembandinganCounting dan Radix


Sort Sort
Dominikus Damas Put ranto, NIM 13506060
Program Studi Teknik Informatika ITB, Bandung 40132
email: if16060@students.if.itb.ac.id

Abstract – Pengurutan sangat penting dalam Dalam beberapa kasus, pengurutan tanpa
Teknologi Informasi yang tak lepas dari pengolahan pembandingan ini memiliki kompleksitas waktu yang
data. Pemecahan permasalahan pengolahan data lebih baik daripada metode pengurutan dengan
dapat menjadi lebih efektif dan efisien bila data sudah pembandingan . Dan walaupun hal itu dapat terjadi
dalam keadaan terurut. Seperti dalam proses dengan berbagai batasan-batasan tertentu, eksplorasi
pencarian data (searching), algoritma pencarian lebih lanjut yang dilakukan semakin lama semakin
tingkat lanjut yang lebih efektif daripada cara membuat batasan-batasan tersebut berkurang, atau
konvensional seperti Binary Search ataupun dengan kata lain semakin lama, algoritma-algoritma
Interpolation Search membutuhkan data yang sudah pengurutan tanpa pembandingan ini semakin dapat
terurut. Contoh lain di mana data terurut dibutuhkan digunakan secara umum ( generalized ). Perbandingan
adalah dalam penggabungan data menggunakan antara Comparison Sort dengan Non Comparison Sort
metode merging. akan dibahas lebih jauh juga dalam makalah ini.

Makalah ini akan mengkaji 2 algoritma pengurutan


yang dalam proses pengurutannya tidak melakukan 2. PENGURUTAN
pembandingan data. Kedua algoritma tersebut adalah
algoritma Counting Sort dan algoritma Radix Sort. 2.1. Pengertian Algoritma Pengurutan [5]
Pengkajian yang dilakukan adalah mengenai ide
dasar, algoritma pengurutan, implementasi, dan
Dalam ilmu komputer, algoritma pengurutan adalah
analisis kompleksitas algoritma. algoritma yang meletakkan elemen-elemen suatu
kumpulan data dalam urutan tertentu. Yang pada
Kata : algoritma pengurutan, sorting algorithm, kenyataannya ‘urutan tertentu’ yang umum digunakan
Kunci
pengurutan tanpa pembandingan, non-comparison adalah secara terurut secara numerikal ataupun secara
sort, comparison sort, radix sort ,counting sort leksikografi (urutan secara abjad sesuai kamus).

1. PENDAHULUAN 2.2. Klasifikasi Algoritma Pengurutan


Berdasarkan Proses [5]
Pengurutan sangat penting dalam Teknologi Informasi
yang tak lepas dari pengolahan data. Pemecahan Banyak klasifikasi yang dapat digunakan untuk
permasalahan pengolahan data dapat menjadi lebih mengklasifikasikan algoritma-algoritma pengurutan,
efektif dan efisien bila data sudah dalam keadaan misalnya secara kompleksitas, teknik yang dilakukan,
terurut. Seperti dalam proses pencarian data stabilitas, memori yang digunakan, rekursif/tidak,
(searching), algoritma pencarian tingkat lanjut yang ataupun proses yang terjadi. Namun agar relevan
lebih efektif daripada cara konvensional seperti Binary dengan topik masalah ini, pengklasifikasian yang
Search ataupun Interpolation Search membutuhkan disajikan adalah menurut langkah yang terjadi dalam
data yang sudah terurut. Contoh lain di mana data proses pengurutan tersebut. Pengklasifikasiannya
terurut dibutuhkan adalah dalam penggabungan data adalah sebagai berikut :
menggunakan metode merging.
1. Exchange Sort
Di antara banyak algoritma pengurutan tersebut Dalam prosesnya, algoritma-algoritma pengurutan
terdapat satu kategori algoritma pengurutan yang yang diklasifikasikan sebagai exchange sort
dalam prosesnya tidak melakukan pembandingan melakukan pembandingan antar data, dan
antardata. Yang sering disebut Non-Comparison melakukan pertukaran apabila urutan yang
Sorting Algorithm , atau dalam bahasa Indonesia didapat belum sesuai. Contohnya adalah : Bubble
Algoritma Pengurutan-Tanpa-Pembandingan. Dua sort, Cocktail sort, Comb sort, Gnome sort,
contoh dari algoritma-algoritma tersebut adalah Quicksort .
Counting Sort dan Radix Sort yang akan dibahas
dalam makalah ini. 2. Selection Sort
Prinsip utama algoritma dalam klasifikasi ini
adalah mencari elemen yang tepat untuk sort ) adalah algoritma pengurutan di mana dalam
diletakkan di posisi yang telah diketahui, dan prosesnya tidak melakukan pembandingan antardata.
meletakkannya di posisi tersebut setelah data
tersebut ditemukan. Algoritma yang dapat Secara umum yang proses yang dilakukan dalam
diklasifikasikan ke dalam kategori ini adalah : metode ini adalah mengklasifikasikan data sesuai
Selection sort, Heapsort, Smoothsort, Strand sort. dengan kategori terurut yang tertentu, dan dalam tiap
kategori dilakukan pengklasifikasian lagi, dan
3. Insertion Sort seterusnya sesuai dengan kebutuhan, kemudian
Algoritma pengurutan yang diklasifikasikan ke subkategori-subkategori tersebut digabungkan
dalam kategori ini mencari tempat yang tepat kembali, yang secara dilakukan hanya dengan metode
untuk suatu elemen data yang telah diketahui ke sederhana concatenation .
dalam subkumpulan data yang telah terurut,
kemudian melakukan penyisipan ( insertion ) data Secara kompleksitas, dalam berbagai kasus tertentu,
di tempat yang tepat tersebut. Contohnya adalah : algoritma tanpa pembandingan ini dapat bekerja
Insertion sor, Shell sort, Tree sort, Library sort, dalam waktu linier, atau dengan kata lain memiliki
Patience sorting. kompleksitas O(n). Yang akan ditelaah lebih detail
pada masing-masing algoritma, yaitu radix sort dan
4. Merge Sort counting sort .
Dalam algoritma ini kumpulan data dibagi
menjadi subkumpulan-subkumpulan yang Salah satu kelemahan dari metode ini adalah selalu
kemudian subkumpulan tersebut diurutkan secara diperlukannya memori tambahan.
terpisah, dan kemudian digabungkan kembali
dengan metode merging. Dalam kenyataannya 3.2 Comparison Sort sebagai Perbandingan
algoritma ini melakukan metode pengurutan
merge sort juga untuk mengurutkan subkumpulan 3.2.1. Comparison Sort
data tersebut, atau dengan kata lain, pengurutan
dilakukan secara rekursif. Contohnya adalah : Pengurutan dengan pembandingan dalam proses
Merge sort . pengurutan melakukan pembandingan antardata, yang
kemudian diikuti dengan pertukaran data bila tidak
5. Non-Comparison Sort sesuai dengan syarat keterurutan tertentu.
Sesuai namanya dalam proses pengurutan data
yang dilakukan algoritma ini tidak terdapat 3.3.2. Kompleksitas Comparison Sort [2]
pembandingan antardata, data diurutkan sesuai
dengan pigeon hole principle . Dalam kenyataanya Contoh dari algoritma pengurutan yang termasuk
seringkali algoritma non-comparison sort yang comparison sort adalah Merge sort dan Quick sort,
digunakan tidak murni tanpa pembandingan, yang Merge sort memiliki kompleksitas O(nlog n) dalam
dilakukan dengan menggunakan algoritma- kasus terburuknya, sedangkan Quick sort dapat
algoritma pengurutan cepat lainnya untuk mencapainya dalam kasus rata-rata.
mengurutkan subkumpulan-subkumpulan
datanya. Contohnya adalah : Radix sort, Bucket Kenyataannya, dalam prosesnya mengurutkan ndata,
sort, Counting sort, Pigeonhole sort, Tally sort. semua pengurutan dengan pembandingan ( comparison
sort ) harus melakukan ( nlog n) pembandingan data
dalam kasus terburuknya.
3. PENGURUTAN TANPA PEMBANDINGAN
Bukti dari pernyataan di atas adalah sebagai berikut :
Sebenarnya klasifikasi-klasifikasi di atas tersebut bila
ditelaah lebih lanjut dapat kita rampatkan menjadi 2 Dalam pengurutan dengan pembandingan, akan
klasifikasi saja, yaitu pengurutan dengan dilakukan pembandingan antardata, misal dalam
pembandingan ( comparison sort ), dan pengurutan sekumpulan data ( a1 , a2 , … , a n ), kita akan melakukan
tanpa pembandingan ( non comparison sort ). Dan pengetesan apakah ai < aj , ai = aj , ai = aj ,a i > aj ,
kedua klasifikasi tersebut akan dikaji lebih lanjut. ataupun ai = aj untuk menentukan urutan relatifnya.
Tentu saja membahas pengurutan dengan Pembandingan ai = aj dapat dihilangkan karena tidak
pembandingan ( comparison sort ) saja tidak cukup, berguna dalam proses pengurutan ini, dan
namun harus disertai pula dengan pembahasan pembandingan ai < aj , ai = aj ,a i > aj , ataupun ai = aj
mengenai pengurutan tanpa pembandingan ( non sebenarnya sama saja karena dalam proses pengurutan
comparison sort ) sebagai perbandingan. kita hanya ingin mendapatkan urutan antara ai dan a
secara relatif. Jadi dapat diasumsikan semua
3.1. Pengurutan Tanpa pembandingan dilakukan dengan menggunakan ai =
Pembandingan aj .
Pengurutan tanpa pembandingan ( non comparison
Dan semua pembandingan yang dilakukan dalam Dan dengan telah jelasnya keterkaitan antara metode
pengurutan dengan pembandingan ( comparison sort ) pengurutan ini dengan pohon keputusan, maka telah
dapat digambarkan dengan pohon keputusan. terlihat dengan jelas mengapa semua comparison sort
Misalnya untuk data dengan 3 elemen, pohon harus melakukan ( nlog n) pembandingan data
keputusannya adalah sebagai berikut : dalam kasus terburuknya.

a1 :
a
2
>
4. COUNTING
=
SORT
a2 : 3 a 1 : 3
4.1. Ide Dasar Counting
a a Sort
= > = >
Untuk dapat melakukan pengurutan dengan counting
a1 : 3 a
sort rentang nilai untuk kumpulan data yang akan
‹1,2,3› ‹2,1,3› 2: 3
a a diurutkan harus diketahui, katakanlah k.
= = >

counting sort
‹1,3,2› ‹2,3,1›
setiap elemen jumlah elemen yang lebih kecil
x,
untuk menentukan posisi . Contoh sederhana saja,
jika terdapat 12 elemen yang lebih kecil daripada ,
maka akan mendapatkan posisinya di posisi 13.
comparison sort
secara umum. Kontrol, pergerakan data, dan aspek-
aspek lainnya yang terdapat dalam algoritma-
algoritma implementasinya diabaikan dalam x
pembuktian ini.
elemen yang nilainya sama dengan di posisi yang
sama.
ai a i j
rentang 1 = = Yang dalam contoh ini adalah 3. Counting
Sort
Misal data yang akan diurutkan adalah .
Counting sort array
kemungkinan terburuk terjadi bila jalur yang ditempuh k, Ci
adalah jalur paling panjang, atau dengan kata lain bila A
menempuh jarak sepanjang kedalaman dari pohon i array
tersebut. counting
disimpan.

mengurutkan elemen memiliki kedalaman ( log array


n sebagai berikut, dengan adalah 10 dan diasumsikan
A i
Bukt
ikedalaman dan melakukan pengurutan A
1 3 5 4 5 2 2 3 3 5
n 1 2 3 4 5 6 7 8 9 10
h
daun, maka : Dan C

n , yang ekuivalen dengan C


h n Stirling’s

approximation Kemudian proses penghitungan pun dimulai, proses


array ,
! > log ( / )n e : pembacaan pertama mendapat elemen
n en [1] dengan isi 1, maka C[1] ditambah 1.

n n n e
= ( log ) 1
C diterapkan dalam metode Radix sort .
1 0 0 0 0
1 2 3 4 5 Dalam proses ini kita mengakses elemen A[i],
kemudian memposisikannya di posisi sebagaimana
Langkah 2 : pembacaan kedua mendapat elemen tercatat dalam C[A[i]], kemudian kita mengurangkan
A[2] dengan isi 3, maka C[3] ditambah 1. C[A[i]] dengan 1, yang dengan jelas untuk
memberikan posisi untuk elemen berikutnya dengan
A yang isinya sama dengan A[i].
1 3 5 4 5 2 2 3 3 5
1 2 3 4 5 6 7 8 9 10 Proses ini memerlukan sebuah array bantu Byang
C
ukurannya sama dengan array A , yaitu n. Yang pada
1 0 1 0 0
awalnya semua B[i] diinisialisasi dengan nil.
1 2 3 4 5

B
Langkah 3 : pembacaan ketiga mendapat elemen
A[3] dengan isi 5, maka C[5] ditambah 1. - - - - - - - - - -
1 2 3 4 5 6 7 8 9 10

A Langkah 1 : elemen A[10] adalah 5, maka karena


1 3 5 4 5 2 2 3 3 5 C[5] adalah 10, maka B[10] diisi dengan 5, dan C[5]
1 2 3 4 5 6 7 8 9 10
dikurangi 1.
C
1 0 1 0 1
A
1 2 3 4 5
1 3 5 4 5 2 2 3 3 5
Langkah 4 : pembacaan keempat mendapat elemen 1 2 3 4 5 6 7 8 9 10
A[4] dengan isi 4, maka C[4] ditambah 1. B
- - - - - - - - - 5
A 1 2 3 4 5 6 7 8 9 10
C
1 3 5 4 5 2 2 3 3 5
1 2 3 4 5 6 7 8 9 10
1 3 6 7 9
C 1 2 3 4 5

1 0 1 1 1
1 2 3 4 5
Langkah 2 : elemen A[9] adalah 3, maka karena C[3]
. adalah 6, maka B[6] diisi dengan 3, dan C[3]
. dikurangi 1.
.
A
Demikian dilakukan terus menerus hingga semua 1 3 5 4 5 2 2 3 3 5
elemen Atelah diakses. Hingga setelah langkah ke 10 1 2 3 4 5 6 7 8 9 10

didapatkan array Csebagai berikut : B


- - - - - 3 - - - 5
1 2 3 4 5 6 7 8 9 10
C
C
1 2 3 1 3
1 3 5 7 9
1 2 3 4 5
1 2 3 4 5

Lalu array Cdiproses sehingga setiap elemen C, C[i] Langkah 3 : elemen A[8] adalah 3, maka karena C[3]
tidak lagi merepresentasikan jumlah elemen dengan adalah 5, maka B[5] diisi dengan 3, dan C[3]
nilai sama dengan i namun setiap C[i] menjadi dikurangi 1.
merepresentasikan jumlah
, elemen yang lebih kecil
atau sama dengan i A
. 1 3 5 4 5 2 2 3 3 5
Dan setelah proses tersebut dilakukan didapatkan C 1 2 3 4 5 6 7 8 9 10
sebagai berikut : B
C - - - - 3 3 - - - 5
1 3 6 7 10 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 C
Setelah C didapat dilakukan proses penempatan sesuai 1 3 4 7 9
dengan posisi yang didapat. Proses ini dilakukan 1 2 3 4 5
dengan menelusuri kembali A dari belakang. Mengapa
dari belakang? Karena kita mengharapkan hasil Langkah 3 : elemen A[7] adalah 2, maka karena C[2]
pengurutan yang stable , yang akan sangat penting adalah 3, maka B[3] diisi dengan 2, dan C[2]
dalam pengurutan data majemuk. Dan juga agar dapat dikurangi 1.
A kalang keempat membutuhkan waktu O (n).
1 3 5 4 5 2 2 3 3 5
1 2 3 4 5 6 7 8 9 10 Jadi secara total membutuhkan waktu O (k+n), yang
B seringkali dianggap k= O(n), sehingga waktu total
- - 2 - 3 3 - - - 5 yang dibutuhkan menjadi O (n).
1 2 3 4 5 6 7 8 9 10
C 4.4. Analisis mengenai Counting
1 2 4 7 9 Sort
1 2 3 4 5 Dengan contoh dan algoritma yang telah dibahas, jelas
. bahwa counting sort melakukan pengurutan tanpa
. melakukan pembandingan antardata.
.
Demikian proses dilakukan hingga elemen A[1] Syarat agar pengurutan ini dapat dilakukan adalah
selesai diproses, sehingga didapatkan hasil akhir diketahuinya rentang nilai data-datanya. Data-data
yang akan diurutkan juga harus berupa bilangan bulat
B (integer ).
1 2 2 3 3 3 4 5 5 5
1 2 3 4 5 6 7 8 9 10
Counting sort bisa efisien bila ktidak jauh lebih besar
daripada n. Di mana semakin besar kmaka memori
Yang telah berupa array dengan elemen-elemennya
tambahan yang diperlukan menjadi sangat besar.
terurut secara non-decreasing .
Contoh di mana counting sortdapat menjadi efisien
adalah bila mengurutkan siswa-siswa dalam sebuah
4.3. Algoritma dan Kompleksitas Waktu Countin
sekolah berdasar nilainya, dengan nilai adalah
Sor g
bilangan bulat dengan rentang 0..100. Dan contoh di
t
mana counting sort akan sangat buruk kinerjanya
Dari implementasi yang telah dilakukan tersebut,
adalah untuk data yang rentangnya sangat besar, misal
penulis mengimplementasikannya manjadi sebuah
dengan rentang 0..2 32 -1.
program menggunakan bahasaPascal sebagai berikut
:
Counting sort memiliki properti yang penting, yaitu
ke-stable-an. Di mana data-data dengan nilai yang
procedure CountingSort (A : TArray; sama akan diurutkan berdasar urutan kemunculan
var B : TArray); pada array asal. Properti ini sangat penting dalam
pengurutan data majemuk.
var
C : array [ 1 ..k] of byte;
i : integer; Dengan kompleksitas O(n), metode pengurutan ini
sangat cepat dan efektif. Yang diimbangi dengan
begin kelemahan yaitu dibutuhkan memori tambahan
sebagai arraybantu dalam prosesnya.
for i:= 1 to k do
C[i] := 0;

for i:= 1 to n do
4. RADIX
C[A[i]] := C[A[i]] + 1;
SORT
4.1. Ide dasar Radix Sort
for i:= 2 to k do
C[i] := C[i] + C[i- 1]; Sebelum memulai membahas lebih lanjut, akan lebih
baik jika diadakan penyamaan persepsi mengenai
for i:=n downto 1 do begin istilah radix, dalam makalah ini radix bermakna
B[C[A[i]]] := A[i]; harafiah posisi dalam angka [1]. Di mana
C[A[i]] := C[A[i]] - 1;
end ;
sederhananya, dalam representasi desimal, radix
adalah digitnya.
end ;
Ide dasar dari metode Radix sort ini adalah
mengkategorikan data-data menjadi subkumpulan-
Waktu yang dibutuhkan untuk mengurutkan data subkumpulan data sesuai dengan nilai radix-nya,
menggunakan counting sort bisa didapatkan dari mengkonkatenasinya, kemudian mengkategorikannya
perhitungan sebagai berikut : kembali berdasar nilai radixlainnya.

Kalang pertama membutuhkan waktu O(k), Dalam kenyataannya banyak sekali algoritma Radix
kalang kedua membutuhkan waktu O(n), sort yang berbeda-beda walaupun ide dasarnya sama,
kalang ketiga membutuhkan waktu O(k), dan ada yang menggunakan queue, ada yang
menggunakan bantuan algoritma pengurutan lain jangan lupa bahwa urutan pada tiap subkumpulan data
untuk mengurutkan data per kategori (dan yang biasa harus sesuai dengan urutan kemunculan pada
digunakan adalah counting sort [2]), ataupun kumpulan data.
menggunakan rekursif.
121 2 32 7 42 8 23 4 3 4 2 74 0 76 9 36 3 67
Selain itu, ada 2 macam Radix sort berdasarkan urutan
pemrosesan radix-nya, yaitu secara LSD ( Leas Kategori digit Isi
Significant Digit ) di mana pemrosesan dimulai tdari 0 -
radixyang paling tidak signifikan, dan satu lagi secara 1 -
MSD ( Most Significant Digit ), di mana pemrosesan 2 121, 823
dimulai dari radixyang paling signifikan. Namun 3 232, 434, 936
dalam makalah ini yang dibahas adalah LSD radix 4 742
sort , di mana langkah yang dilakukan lebih sederhana
5 -
dibanding dengan MSD radix sort yang dalam
6 367
pemrosesannya diperlukan penyimpanan track dari
7 274, 076
pemrosesan sebelumnya.
8 -
9 -
Agar relevan dengan topik utama makalah ini yang
mengedepankan pengurutan tanpa pembandingan,
Yang kemudian dikonkatenasi kembali menjadi
yang dibahas hanyalah radix sort yang dalam
prosesnya hanya menggunakan pengkategorian
berulang, tanpa menggunakan bantuan algoritma 121 823 232 434 936 742 367 274 076
pengurutan lain.
Kemudian langkah ketiga, atau langkah terakhir pada
4.2. Implementasi Radix Sort contoh ini adalah pengkategorian kembali berdasar
digit yang terkiri, atau yang paling signifikan :
Contoh implementasi yang akan dilakukan adalah
implementasi pada bilangan bulat positif 121 823 232 4 34 936 742 367 274 076
menggunakan salah satu algoritma pengurutan radix
sort . Kategori digit Isi
0 076
Contohnya adalah pengurutan sebuah kumpulan data 1 121
bilangan bulat dengan jumlah digit maksimal 3 : 2 232, 274
3 367
121 076 823 367 232 434 742 936 274 4 434
5 -
Pertama kali, data dibagi-bagi sesuai dengan digit 6 -
terkanan : 7 742
8 823
12107 682 336 723 243 474 293 627 4 9 936

Kategori digit Isi Yang kemudian dikonkatenasi lagi menjadi


0 -
1 121 076 121 232 274 367 434 742 823 936
2 232, 742
3 823 Yang merupakan hasil akhir dari metode pengurutan
4 434, 274 ini. Di mana data telah terurut dengan metode radix
5 - sort.
6 076, 936
7 367 4.3. Algoritma dan Kompleksitas Waktu Radix Sort
8 -
9 - Implementasi dari algoritma tersebut dibuat penulis
menggunakan bahasa Pascal, yang direalisasikan
Hasil pengkategorian tersebut lalu digabung kembali dengan menggunakan queue sebagai representasi tiap
dengan metode konkatenasi menjadi : kategori radix untuk pengkategorian. ArrayA adalah
array input , dan arrayB adalah arrayA yang sudah
121 232 742 823 434 274 076 936 367 terurut.

Kemudian pengkategorian dilakukan kembali,namun


kali ini berdasar digit kedua atau digit tengah, dan
radixadalah digit, namun dalam penggunaannya radix
Procedure RadixSort (A : TArray; var B : bisa saja dalam ukuran-ukuran 3 bit (oktal), maupun
TArray; d : byte); karakter untuk pengurutan string . Yang perlu
var diperhatikan adalah bahwa semakin besar d semakin
KatRadix : array [ 0 .. 9] of Queue;
besar juga ruang yang diperlukan, namun jika dkecil,
i, x, ctr : integer;
pembagi : longword; iterasi yang perlu dilakukan menjadi semakin banyak.
Jadilebih baik pemilihan d disesuaikan dengan
begin kebutuhan dan memori maupun waktu yang tersedia.

{--- mengkopi A ke B Dalam penggunaannya, radix sort bahkan bisa


for i:= 1 to n
---} do dimodifikasi sehingga bisa digunakan untuk
B[i] := A[i];
mengurutkan data-data negatif, floa , dan pecahan
pembagi := 1; untuk kasus-kasus tertentu. t
for x:= 1 to d do begin
{--- inisialisasi KatRadix Radix sort adalah algoritma pengurutan data yang
for i:= 0 to 9 do
---}
cepat, efektif, dan sederhana.
InitQueue (KatRadix[i]);

{--- dikategorikan
fori:= 1 to n do
---} 5. KESIMPULAN
Enqueue (KatRadix [(B[i] div
pembagi) mod 10 ], B[i]); Dari bahasan di atas, dapat disimpulkan Algoritma
B[i] := 0; Pengurutan Tanpa Pembandingan ( Non-Comparison
Sorting ) adalah algoritma pengurutan yang cepat,
{--- dikonkat efektif, namun penggunaannya terbatas pada kasus-
ctr := 0;
---}
for i:= 0 to 9 do begin
kasus tertentu dan memerlukan memori tambahan
while ( NOTIsQueueEmpty dalam prosesnya.
(KatRadix[i])) do begin
ctr := ctr + 1; Dan secara umum kompleksitasnya adalah linier, di
B[ctr]:=DeQueue (KatRadix [i]); mana lebih baik daripada algoritma Pengurutan
end ; Dengan Pembandingan ( Comparison Sort ) yang
end ; memiliki lower-bound ( nlog n).
pembagi := pembagi * 10 ;
end ; Secara lebih mendalam, Counting Sort adalah
algoritma pengurutan efektif dan efisien yang
end ; melakukan pengurutan dengan ide dasar meletakkan
elemen pada posisi yang benar, di mana penghitungan
posisi yang benar dilakukan dengan cara menghitung
Dari algoritma di atas, dapat dihitung waktu yang (counting ) elemen-elemen dengan nilai lebih kecil
diperlukan untuk melakukan pengurutan atau sama dengan elemen tersebut. Dan memiliki
menggunakan metode radix sort. kompleksitas waktu linier .Walaupun tidak dapat
digunakan secara luas karena banyaknya batasan.
Kalang luar pertama : O (n)
Radix Sort melakukan pengurutan dengan cara
Kalang dalam pertama : O (1) mengkategorikan data sesuai dengan radix tertentu
Kalang dalam kedua : O(n) secara berulang-ulang. Memerlukan memori tambahan
Kalang dalam ketiga : O(n) yang berbanding lurus dengan d, di mana d adalah
Sehingga kompleksitasnya adalah O(n) radixyang digunakan. Memiliki kompleksitas waktu
linier juga seperti Counting Sort .
Semua itu kalang dalam tersebut terdapat dalam
kalang luar kedua, yang memiliki kompleksitas O (d).
Jadi secara keseluruhan prosedur Radix Sortdi atas DAFTAR
memiliki kompleksitas O(nd). REFERENSI
[1] DF Alfatwa, ER Syah P, FM Ahsan,
4.4. Analisis mengenai Radix Sort “Implementasi Algoritma Radix Sort dalam
Berbagai Kasus Bilangan Dibandingkan Algoritma
Dari langkah-langkah yang dilakukan dalam proses Pengurutan yang lain”. Bandung. 2005.
pengurutan menggunakan radix sort, jelas tampak
bahwa radix sort termasuk dalam kategori pengurutan [2] Thomas H. Cormen, Charles E. Leiserson, Ronald
tanpa pembandingan. L. Rivest, Introduction To Algorithms , McGraw-
Dalam contoh yang menggunakan bilangan desimal, Hill. 1990.
[3] Handbook UI, Algoritma-algoritma pengurutan
internal
http://ranau.cs.ui.ac.id/sda/archive/1998/handout/ha
ndout24.html
Tanggal akses : 29 Desember 2007 pukul 04.00
GMT +7

[4] Wikipedia, (2007). Wikipedia, the free


encyclopedia.
http://en.wikipedia.org/wiki/Counting_Sort
Tanggal akses : 29 Desember 2007 pukul 04.00
GMT +7

[5] Wikipedia, (2007). Wikipedia, the free


encyclopedia.
http://en.wikipedia.org/wiki/Sorting_Algorithm
Tanggal akses : 29 Desember 2007 pukul 04.00
GMT +7

[6] Wikipedia, (2007). Wikipedia, the free


encyclopedia.
http://en.wikipedia.org/wiki/Radix_Sort
Tanggal akses : 29 Desember 2007 pukul 04.00
GMT +7

You might also like