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