Algoritma RadixSort LANDASAN TEORI

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