10
2. Selection Sort Algoritma yang dikategorikan dalam Selection Sort jika cara kerja algoritma
tersebut mencari elemen yang tepat untuk diletakkan pada posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut
ditemukan. Contohnya adalah selection sort, heap sort, smooth sort, strand sort.
3. Insertion Sort Algoritma yang dikategorikan dalam Insertion Sort jika cara kerja algoritma
tersebut mencari tempat yang tepat untuk suatu elemen data yang telah diketahui ke dalam subkumpulan data yang telah terurut, kemudian melakukan
penyisipan insertion data di tempat yang tepat tersebut. Contohnya adalah insertion sort, shell sort, tree sort, library sort, patience sort.
4. Merge Sort Algoritma yang dikategorikan dalam Merge Sort jika cara kerja algoritma
tersebut membagi data menjadi subkumpulan-subkumpulan yang kemudian subkumpulan tersebut diurutkan secara terpisah, dan kemudian digabungkan
kembali dengan metode merging. algoritma ini melakukan metode pengurutan merge sort juga untuk mengurutkan subkumpulandata tersebut, atau dengan
kata lain, pengurutan dilakukan secara rekursif. Contohnya adalah merge sort. 5. Non Comparison Sort
Algoritma yang dikategorikan dalam Non Comparison Sort jika proses pengurutan data yang dilakukan algoritma tersebut tidak terdapat pembanding
antar data, data diurutkan sesuai dengan pigeon hole principle. Contohnya adalah radix sort, bucket sort, counting sort, pigeonhole sort, tally sort.
2.6. Algoritma QuickSort
Algoritma QuickSort merupakan teknik pengurutan yang dikemukakan pertama kali oleh C.A.R Hoare pada tahun 1962. Metode penyelesaiannya menggunakan
pendekatan rekursif
[5]
. QuickSort disebut juga sebagai Partition Exchange Sort. Disebut QuickSort karena terbukti mempunyai kemampuan average behaviour yang
terbaik diantara algoritma pengurutan yang lain. Disebut Partition Exchange Sort
Universitas Sumatera Utara
11
karena proses pengurutan menggunakan partisi dan pengurutan dilakukan pada setiap partisi
[7]
.
2.6.1. Langkah-langkah melakukan pengurutan algoritma QuickSort Tahapan dalam melakukan partisi pada Algoritma QuickSort sebagai berikut:
1. Pilih x Є {A1, A2, ... , An} sebagai elemen pivot x 2. Lakukan scanning tabel dari kiri ke kanan sampai ditemukan Ap≥
x 3. Lakukan scanning tabel dari kanan ke kiri sampai ditemukan Aq≤
x 4. Swap Ap↔ Aq
5. Ulangi langkah ke-2, sampai kedua scanning bertemu di tengah tabel.
Untuk menetukan pivot, ada baiknya dari median tabel. Sebagai contoh, ambil bilangan acak:
523 235
088 880
028 093
002 153
1. Menentukan pivot A1
A2 A3
A4 A5
A6 A7
A8 523
235 088
880 028
093 002
153 x
2. Melakukan scanning tabel dari kiri ke kanan sampai ditemukan Ap≥ x dan
scanning tabel dari kanan ke kiri sampai ditemukan Aq≤ x
A1 A2
A3 A4
A5 A6
A7 A8
523 235
088 880
028 093
002 153
p x
q
3. Swap Ap↔ Aq A1
A2 A3
A4 A5
A6 A7
A8 002
235 088
880 028
093 523
153 p
x q
Universitas Sumatera Utara
12
4. Mengulangi langkah ke-2 dari posisi p+1 dan dari posisi q-1, sampai kedua scanning bertemu ditengah tabel.
A1 A2
A3 A4
A5 A6
A7 A8
002 235
088 880
028 093
523 153
p x
q
5. Swap Ap↔ Aq A1
A2 A3
A4 A5
A6 A7
A8 002
028 088
880 235
093 523
153 p
x q
6. Mengulangi langkah ke-2, karena pivot telah berubah A1
A2 A3
A4 A5
A6 A7
A8 002
028 088
880 235
093 523
153 p
x q
7. Swap Ap↔ Aq A1
A2 A3
A4 A5
A6 A7
A8 002
028 088
153 235
093 523
880 p
x q
8. Mengulangi langkah ke-2 dari posisi p+1 dan dari posisi q-1, sampai kedua scanning bertemu ditengah table
A1 A2
A3 A4
A5 A6
A7 A8
002 028
088 153
235 093
523 880
x p
q
Universitas Sumatera Utara
13
9. Swap Ap↔ Aq, berhenti karena p≤q di tengah tabel A1
A2 A3
A4 A5
A6 A7
A8 002
028 088
153 093
235 523
880 x
p q
10. Membagi partisi menjadi 2 tabel: Hasil partisi pertama:
A1 A2
A3 A4
A5 002
028 088
153 093
11. Menentukan pivot A1
A2 A3
A4 A5
002 028
088 153
093 x
12. Melakukan scanning tabel dari kiri ke kanan sampai ditemukan Ap≥ x dan
scanning tabel dari kanan ke kiri sampai ditemukan Aq≤ x
A1 A2
A3 A4
A5 002
028 088
153 093
x p
q
13. Swap Ap↔ Aq, berhenti karena p≤q di tengah tabel A1
A2 A3
A4 A5
002 028
088 093
153 x
p q
Hasil partisi kedua: A6
A7 A8
235 523
880
Universitas Sumatera Utara
14
14. Menentukan pivot A6
A7 A8
235 523
880 x
15. Melakukan scanning tabel dari kiri ke kanan sampai ditemukan Ap≥ x dan
scanning tabel dari kanan ke kiri sampai ditemukan Aq≤ x. Dan ternyata,
tidak dapat melakukan scanning karena syarat tidak memenuhi. Oleh karena itu, hasil scanning partisi kedua selesai dan merupakan hasil akhir
pemartisian. A6
A7 A8
235 523
880 x
16. Hasil akhir merupakan gabungan antara hasil akhir proses partisi pertama dan kedua
A1 A2
A3 A4
A5 A6
A7 A8
002 028
088 093
153 235
523 880
2.6.2. Pseudocode algoritma QuickSort Menurut Fachrie Lantera, 2008 pseudocode pada algoritma QuickSort adalah sebagai
berikut:
Procedure QuickSort inputoutput a : array [1..n] of integer, input i,j : integer
Deklarasi :
{mengurutkan tabel a[i..j] dengan algoritma QuickSort. Masukkan: Tabel a[i..j] yang sudah terdefinisi elemen-elemennya.
Keluaran: Tabel a[i..j] yang terurut menaik.}
Deklarasi :
k : integer; Algoritma :
Universitas Sumatera Utara
15 if ij then
Partisia,i,j,k {Ukuran a 1} QuickSorta,i,k
QuickSorta,k+1, j End if
Procedure Partisi inputoutput: a : array[1..n] of integer, input 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 endwhile
{ Aq = pivot } if p q then
{ pertukarkan a[p] dengan a[q]} temp - a[p]
a[p] - a[q] a[q] - temp
Universitas Sumatera Utara
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