Anda di halaman 1dari 3

TUBES CSH2G3 IF4008 KELOMPOK 7 1

Analisa Kompleksitas Kasus Terburuk


Pada Algoritma Quicksort
Maxalmina S. Kahfi(1301164318), M. Alfisar Rachman(1301164),
dan M. Fajar Rizqi(1301164)

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

1 P ENDAHULUAN lain quicksort membagi elemen masukkan


berdasarkan nilai dari suatu elemen array.

P ENGURUTAN merupakan hal sederhana


yang sering dilakukan dalam
pemrograman. Pengurutan digunakan untuk 2 S TRATEGI A LGORITMA Q UICKSORT
mengolah suatu data yang belum terurut
menjadi terurut secara menaik ataupun Algoritma quicksort menggunakan teknik divide
menurun. Hal tersebut dilakukan agar suatu and conquer dalam proses pengurutan suatu
data dapat digunakan atau diolah dengan baik. data. Tahapan dari ide dasar penyelesaian ka-
sus pengurutan menggunakan algoritma quick-
Sebagai contoh, data mahasiswa akan sort adalah sebagai berikut:
diurutkan sesuai dengan nilai ujian mereka. 1) Divide: memilih satu elemen dari array
Pertanyaan tentang ujian mahasiswa akan masukkan yang akan dijadikan seba-
lebih mudah dijawab jika data telah terurut. gai pivot (pijakan). Kemudian, bagi array
Disisi lain, pencarian terhadap suatu data menjadi dua bagian sehingga salah satu
mahasiswa dengan kriteria tertentu akan lebih bagian nilai elemen pada array tersebut
mudah untuk dicari, jika data telah terurut selalu ≤ pivot dan bagian lainnya selalu
baik menaik maupun menurun. > pivot. Selanjutnya, lakukan quicksort
pada masing-masing subarray tersebut.
Algoritma pengurutan sangat beragam serta 2) Conquer: ketika anggota elemen pada ar-
memiliki kelebihan dan kekurangannya ray tersebut hanya tersisa satu elemen,
masing-masing. Salah satu algoritma array tersebut sudah terurut.
pengurutan dalam pemrograman adalah 3) Combine: penggabungan subarray
algoritma quicksort. Sama halnya dengan dengan menggabungkan hasil quicksort
algoritma mergesort, algoritma quicksort bagian kanan dan kiri.
mengurutkan data dengan salah satu teknik Sebagai contoh, kita akan mengurutkan array
algoritma yaitu, teknik divide and conquer. [15, 18, 5, 20, 9, 10, 13] secara menaik dan
memilih elemen 13 sebagai pivot. Selanjutnya,
Jika mergesort membagi elemen masukkan pindahkan seluruh elemen yang nilainya lebih
berdasarkan posisinya pada array, disisi kecil sama dengan dari pivot (≤ 13) dan elemen
TUBES CSH2G3 IF4008 KELOMPOK 7 2

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

Algoritma 2 Quicksort(A[l..r]) R EFERENSI


if l ≥ r then [1] Thomas H. Cormen, Charles E. Leiserson, Ronald L.
return Rivest, and Clifford Stein, Introduction to Algorithm, 3rd ed.
else Cambridge, Massachusetts: The MIT press, 2009.
j=l [2] William Gozali dan Alham Fikri Aji, Pemrograman Kom-
petitif Dasar, 1st ed. Ikatan Alumni TOKI, 2018.
i=r [3] Dr. Mirza Abdulla, Quick Sort with Optimal Worst Case
while j ≤ i do Running Time. American Journal of Engineering Research,
while A[j] ≤ pivot and i < j do 6(1):32-36, 2017.
j =j+1 [4] Anany Levitin, Introduction to The Design and Analysis of
Algorithms, 3rd ed. United States of America: Pearson
end while Education, Inc., 2012.
while A[i] > pivot and i < j do
i=i−1
end while
if j ≤ i then
SWAP(A[i], A[j])
i=i−1
j =j+1
end if
end while
Quicksort(A[l..i])
Quicksort(A[j..r])
end if

3 KOMPLEKSITAS A LGORITMA
Terdapat tiga kasus untuk menganalisa kom-
pleksitas dari algoritma quicksort.

4 A NALISA P ERBANDINGAN E FISIENSI


5 K ESIMPULAN
The conclusion goes here.

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...

Anda mungkin juga menyukai