Algoritma quick sort diperkenalkan pertama
kali oleh C.A.R. Hoare pada tahun 1960, dan dimuat sebagai artikel di “Computer
Journal 5” pada April 1962. Quick sort adalah algoritma sorting yang berdasarkan
pembandingan dengan metoda divide-and-conqueror. Disebut Quick Sort, karena
Algoritma quick sort mengurutkan dengan sangat cepat. Quick sort disebut juga
dengan partition exchange sort, karena konsepnya membuat partisi-partisi, dan
sort dilakukan per partisi.
Teknik mempartisi tabel:
(i) pilih x ϵ {a1, a2, …, an} sebagai elemen pivot.
(ii) pindai (scan) tabel dari kiri sampai
ditemukan elemen ap ≥ x.
(iii) pindai tabel dari kanan sampai ditemukan
elemen aq ≤ x
(iv) pertukarkan ap <-> aq
(v) ulangi (ii) dari posisi p + 1, dan (iii)
dari posisi q – 1, sampai kedua pemindaian bertemu di tengah tabel.
Algoritma quick sort mengurutkan dengan sangat
cepat, namun algoritma ini sangat komplex dan diproses secara rekursif. Sangat
memungkinkan untuk menulis algoritma yang lebih cepat untuk beberapa kasus
khusus, namun untuk kasus umum, sampai saat ini tidak ada yang lebih cepat
dibandingkan algoritma quick sort.
Walaupun begitu algoritma quick sort tidak
selalu merupakan pilihan yang terbaik. Seperti yang telah disebutkan
sebelumnya, algoritma ini dilakukan secara rekursif yang berarti jika dilakukan
untuk tabel yang berukuran sangat besar, walaupun cepat, dapat menghabiskan
memori yang besar pula. Selain itu, algoritma ini adalah algoritma yang terlalu
komplex untuk mengurutkan tabel yang berukuran kecil (hanya puluhan elemen
misalnya). Selain itu algoritma quick sort mempunyai tingkat efisiensi yang
buruk ketika dioperasikan pada tabel yang hampir terurut atau pada tabel yang
terurut menurun.
Algoritma Quick Sort
Dalam algoritma quick sort, pemilihan pivot
adalah hal yang menentukan apakah algoritma quick sort tersebut akan memberikan
performa terbaik atau terburuk. Berikut beberapa cara pemilihan pivot :
- Pivot adalah elemen pertama, elemen terakhir, atau elemen tengah tabel. Cara ini hanya bagus jika elemen tabel tersusun secara acak, tetapi tidak bagus jika elemen tabel semula sudah terurut. Misalnya, jika elemen tabel semula menurun, maka semua elemen tabel akan terkumpul di upatabel kanan.
- Pivot dipilih secara acak dari salah satu elemen tabel. Cara ini baik, tetapi mahal, sebab memerlukan biaya (cost) untuk pembangkitan prosedur acak. Lagi pula, itu tidak mengurangi kompleksitas waktu algoritma.
- Pivot adalah elemen median tabel. Cara ini paling bagus, karena hasil partisi menghasilkan dua bagian tabel yang berukuran seimbang (masing masing ≈ n/2 elemen). Cara ini memberikan kompleksitas waktu yang minimum. Masalahnya, mencari median dari elemen tabel yang belum terurut adalah persoalan tersendiri.
Kelebihan dan
Kelemahan Algoritma Quick Sort
Kelebihan Algoritma
Quick Sort:
- Secara umum memiliki kompleksitas O(n log n).
- Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan arsitektur mesin secara efisien.
- Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan dengan perbandingan, seperti merge sort dan heap sort.
- Melakukan proses langsung pada input (in-place) dengan sedikit tambahan memori.
- Bekerja dengan baik pada berbagai jenis input data (seperti angka dan karakter).
Namun terdapat pula
kelemahan quick sort:
- Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan (hasilnya tidak benar atau tidak pernah selesai).
- Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas O(n2).
- Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil akhirnya (dalam hal inputnya bernilai sama).
- Pada penerapan secara rekursif (memanggil dirinya sendiri) bila terjadi kasus terburuk dapat menghabiskan stack dan memacetkan program.
Tidak ada komentar:
Posting Komentar