Algoritma QuickSort LANDASAN TEORI

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