Abstrak—Quicksort adalah algoritma pengurutan dengan prinsip divide and conquer selain merge sort. Algoritma
pengurutan quicksort telah digunakan selama lebih dari 50 tahun dan salah satu algoritma pengurutan paling praktis
yang digunakan dalam industri komputasi. Teknik divide and conquer dalam algoritma quicksort terdapat pada bagian
utamanya yaitu, pada saat proses partisi. Algoritma tersebut diharapkan memiliki running time yang baik, dan tidak
ada masukan tertentu yang menyebabkan kasus terburuk pada kompleksitasnya. Akan tetapi kasus terburuk algoritma
tersebut memiliki kompleksitas O(n2 ). Dalam makalah ini akan dianalisa kompleksitas algoritma dan perbandingan
efisiensi antara strategi pengurutan brute force dengan algoritma quicksort.
Kata Kunci—Quicksort, sorting, divide and conquer, worst case, analisa algoritma
yang nilainya lebih besar dari pivot (> 13). Uru- memerlukan array sementara untuk mempar-
tan elemen array setelah pemindahan elemen tisi array. Berikut cara kerja algoritma partisi
pada satu bagian (sebelah kanan pivot atau kiri Hoare:
pivot) tidaklah penting. 1) Memilih pivot dari salah satu elemen
array.
2) Membuat dua variabel penunjuk, i dan
j yang masing-masing akan menunjuk
indeks paling awal dan indeks paling
Gambar 1. Kondisi awal array akhir dari suatu array.
3) Pindahkan variabel i ke arah kanan array,
hingga elemen yang ditunjuk lebih besar
dari pivot (A[j] > pivot).
4) Pindahkan variabel j ke arah kiri array,
hingga elemen yang ditunjuk lebih kecil
sama dengan dari pivot (A[j] ≤ pivot).
Gambar 2. Proses divide menghasilkan array 5) Jika i ≤ j, tukar elemen pada array yang
tersebut. Seluruh elemen yang berada di sisi ditunjuk i dan j, maka pindahkan i ke
kanan memiliki nilai > 5, sementara seluruh kanan satu langkah dan j ke kiri satu
elemen di sisi kiri memiliki nilai ≤ 13. langkah.
6) Jika i ≤ j, maka kembali ke tahap 3. Jika
Setelah didapatkan kedua array tersebut, tidak, maka selesai.
lakukan quicksort pada keduanya secara rekur- Implementasi algoritma partisi Hoare terda-
sif. Adapun base case dari rekursi tersebut pat pada algoritma
adalah saat array yang ingin diurutkan hanya
tersisa satu elemen saja. Langkah-langkah
tersebut akan menyebabkan seluruh elemen Algoritma 1 PartisiHoare(A[l..r], pivot)
pada array akan terurut. j=l
i=r
while j ≤ i do
2.1 Algoritma Partisi while A[j] ≤ pivot and i < j do
Bagian utama dari algoritma quicksort adalah j =j+1
pada proses partisi. Pada teknik algoritma end while
divide and conquer, proses partisi merupakan while A[i] > pivot and i < j do
bagian divide. Sebelum melakukan proses i=i−1
partisi, program harus terlebih dahulu memilih end while
pivot dari salah satu elemen array. if j ≤ i then
SWAP(A[i], A[j])
Selanjutnya adalah proses partisi dengan i=i−1
memindahkan seluruh elemen array yang j =j+1
lebih kecil sama dengan pivot ke sisi kiri end if
pivot dan yang lebih besar ke sisi kanan pivot. end while
Pemilihan pivot dilakukan secara bebas. Akan
tetapi pemilihan pivot dengan cara tertentu
akan mempengaruhi performa dari algoritma
quicksort.
2.2 Algoritma Quicksort
Jika sudah memilih salah satu elemen array Setelah membuat algoritma partisi, selanjut-
menjadi pivot, salah satu cara untuk mempartisi nya mengintegrasikan algoritma partisi den-
array adalah dengan mengimplementasikan al- gan algoritma quicksort. Implementasi algo-
goritma partisi Hoare. Algoritma tersebut tidak ritma quicksort terdapat pada algoritma
TUBES CSH2G3 IF4008 KELOMPOK 7 3
3 KOMPLEKSITAS A LGORITMA
Terdapat tiga kasus untuk menganalisa kom-
pleksitas dari algoritma quicksort.
A PPENDIKS A
P ROOF OF THE F IRST Z ONKLAR E QUA -
TION
Appendix one text goes here.
A PPENDIKS B
Appendix two text goes here.
ACKNOWLEDGMENTS
The authors would like to thank...