Algoritma 3 Way QuickSort LANDASAN TEORI

16 { tentukan awal pemindaian berikutnya } p - p+ 1 q - q - 1 endif until p q 2.6.3. Kompleksitas waktu asimptotik algoritma QuickSort Terdapat 3 kemungkinan kasus dari performa algoritma QuickSort ini yaitu, terbaik dan rata-rata best and average case= n log n, serta terburuk worst case= n 2 . Kompleksitas waktu asimptotik algoritma QuickSort adalah O n log n. Oleh karena itu, dapat disimpulkan algoritma ini termasuk “linearitmik”. Karena merupakan algoritma log n yang dijalankan sebanyak n kali. Dan digunakan untuk memecahkan masalah besar menjadi masalah yang kecil sangat sesuai dengan algoritma QuickSort yang bersifat divide and conquer.

2.7. Algoritma 3 Way QuickSort

Algoritma 3 Way QuickSort pertama kali dikemukakan oleh Sedgewick. 3 Way QuickSort merupakan pengembangan dari algoritma QuickSort dengan membagi array menjadi 3 bagian, yaitu: array v, array =v, dan array v. Dimana v merupakan elemen pivot. Dan mempartisinya berdasarkan partisi QuickSort. 2.7.1. Langkah-langkah melakukan pengurutan algoritma 3 Way QuickSort Mekanisme pengurutannya adalah sebagai berikut: 1. Pilih x1, x2, x3 Є {A1, A2, ... , An} sebagai elemen pivot x1, x2, x3 2. Susun pivot dengan syarat x1 x2 x3 3. Atur semua data selain pivot x1, x2, x3 sesuai urutan kemunculan dengan syarat data yang lebih kecil dari pivot x1, x2, x3 berada di sebelah kiri pivot dan data yang lebih besar atau sama dengan pivot berada di sebelah kanan pivot. 4. Ulangi langkah pertama hingga keseluruhan data terurut A1A2A3...An Sebagai contoh, ambil bilangan yang sama seperti sebelumnya: 523 235 088 880 028 093 002 153 Universitas Sumatera Utara 17 523 235 088 880 028 093 002 153 002 028 088 093 153 235 523 880 2.7.2. Pseudocode algoritma 3 Way QuickSort Deklarasi : Algoritma : if ij then Partisia,l,i,j,r {Ukuran a 1} ThreeWayQuickSorta,l,j ThreeWayQuickSorta,i, r end if Procedure ThreeWayQuickSort inputoutput a : arr [1..r] of integer, input i, lt, gt, v : integer if ipivot then swap [lt],a[i] temp - a[i] a[i] - [lt] a[lt] - temp lt- lt+1 i- i+1 while pivot=pivot+1 || pivot-1 gtpivot do Partisi endwhile endif if ipivot then swap a[i],[gt] temp - a[i] a[i] - [gt] a[gt] - temp Universitas Sumatera Utara 18 gt- gt-1 while pivot=pivot+1 || pivot-1 gtpivot do Partisi endwhile endif if a[i]=pivot then i- i+1 while pivot=pivot+1 || pivot-1 gtpivot do Partisi endwhile endif Procedure Partisi inputoutput: a :array[1..r] of integerinput i, j : integer, output q : integer {Membagi tabel a[i..j] menjadi dua tabel a[i..q] dan a[q+1..j] scanning a[i..q] dan a[q+1..j] Sedemikian sehingga elemen tabel a[i..q] lebih kecil dari elemen tabel a[q+1..j] } Deklarasi : Pivot, temp : integer Algoritma : Pivot - A[i+j div 2] { pivot = elemen tengah } p - i q - j repeat while a[p] pivot do p - p + 1 endwhile { Ap = pivot } while a[q] pivot do q - q – 1 Universitas Sumatera Utara 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