19 endwhile
{ Aq = pivot } if p q then
{ pertukarkan a[p] dengan a[q]} temp - a[p]
a[p] - a[q] a[q] - temp
{ tentukan awal pemindaian berikutnya} p - p+ 1
q - q - 1 endif
until p q
2.7.3. Kompleksitas waktu asimptotik algoritma 3 Way QuickSort Algoritma 3 Way QuickSort ini adalah algoritma yang tidak stabil dan memiliki
kompleksitas yang sama dengan QuickSort yaitu, terbaik dan rata-rata best and average case= n log n, dan kasus terburuk worst case = n
2
. Kompleksitas waktu asimptotik algoritma 3 Way QuickSort adalah O n log n.
2.8. Algoritma RadixSort
Algoritma RadixSort merupakan algoritma pengurutan yang cepat, mudah, dan sangat efektif. Namun banyak orang yang berpikir bahwa algoritma ini memiliki banyak
batasan di mana untuk kasus- kasus tertentu tidak dapat dilakukan dengan algoritma ini, seperti pengurutan bilangan pecahan, bilangan negatif, adanya kompleksitas bit
dan word, dan pengurutan pada multiple keys. RadixSort hanya bisa digunakan pada bilangan integer, untuk bilangan pecahan, bisa dilakukan dengan perantara bucket sort
atau metode berbasis perbandingan yang lain. Dalam perilakunya yang melihat digit- digit angka sebagai pengontrolnya, RadixSort dapat dimplementasikan dalam
pengurutan bilangan desimal dan bilangan bit.
[8]
Universitas Sumatera Utara
20
2.8.1. Langkah-langkah melakukan pengurutan algoritma RadixSort Langkah-langkah pengurutan RadixSort adalah sebagai berikut:
1. Data dibagi sesuai digit terkanan 52
3 23
5 08
8 88
02 8
09 3
00 2
15 3
Kategori Digit Isi
880 1
- 2
002 3
523, 093, 153 4
- 5
235 6
- 7
- 8
088, 028 9
-
2. Hasil pengategorian tersebut lalu digabungkan kembali dengan metode kongkatenasi menjadi:
880 002
523 093
153 235
088 028
3. Kemudian pengategorian dilakukan kembali, namun kali ini berdasar digit kedua atau digit tengah, dan jangan lupa bahwa urutan pada tiap
subkumpulan data harus sesuai dengan urutan kemunculan pada kumpulan data
8 8
2 5
2 3
9 3
1 5
3 2
3 5
8 8
2 8
Kategori Digit Isi
002 1
- 2
523, 028
Universitas Sumatera Utara
21
3 235
4 -
5 153
6 -
7 -
8 880, 088
9 093
4. Kemudian dikongkatenasikan kembali menjadi: 002
523 028
235 153
880 088
093
5. Pengategorian kembali berdasar digit yang terkiri, atau yang paling signifikan
02 5
23 28
2 35
1 53
8 80
88 93
Kategori Digit Isi
002, 028, 088, 093 1
153 2
235 3
- 4
- 5
523 6
- 7
- 8
880 9
-
6. Dan kemudian kongkatenasikan kembali, yang merupakan hasil akhir dari pengurutan berdasarkan RadixSort
002 028
088 093
153 235
523 880
Universitas Sumatera Utara
22
2.8.2. Pseudocode algoritma RadixSort Menurut Dominikus DP 2005 pseudocode pada Algoritma RadixSort adalah sebagai
berikut :
Procedure RadixSort A : T Array; var B :T Array; d : byte;
var KatRadix : array[0..9] of Queue;
i, x, ctr : integer; pembagi : longword;
begin {--- salin A ke B ---}
for i:=1 ton do
B[i] := A[i]; pembagi := 1;
endfor
for x:=1 tod do
begin {--- inisialisasi KatRadix ---}
for i:=0 to 9 do
InitQueue KatRadix[i];
{--- dikategorikan ---} for
i:=1 to n do Enqueue
KatRadix [B[i] div pembagi mod 10], B[i];
B[i] := 0; {--- dikonkat ---}
ctr := 0; endfor
for i:=0 to 9 do
begin while NOT IsQueueEmptyKatRadix[i] do
begin ctr := ctr + 1;
Universitas Sumatera Utara
23 B[ctr]:=DeQueue KatRadix [i];
endwhile end;
end; pembagi := pembagi 10;
end; end;
2.8.3. Kompleksitas waktu asimptotik algoritma RadixSort Kompleksitas waktu asimptotik Algoritma RadixSort adalah Ond. Secara umum,
Algoritma RadixSort memiliki kompleksitas waktu asimptotiknya yang sangat kecil OkN. Dimana k merupakan panjang digit terpanjang dalam kumpulan data. Dalam
hal ini, dikategorikan ke dalam “linear” karena bentuk OkN sebanding dengan On, dimana waktu eksekusinya sebanding dengan jumlah data.
Universitas Sumatera Utara
BAB 1 PENDAHULUAN