Anda di halaman 1dari 4

1

Perbandingan Tiga Algoritma Sorting : Heap Sort, Radix Sort, dan Quick Sort
Three Sorting Algorithm Comparison : Heap Sort, Radix Sort, and Quick Sort

Rizki Afrizal Supriyanto (171524027)


Jurusan Teknik Komputer dan Informatika, Program Studi D4 Teknik Informatika. POLBAN.
Jalan Kampus Polban, Ciwaruga, Parongpong, Kabupaten Bandung Barat. 40559.
e-mail : rizki.afrizal.tif417@polban.ac.id

ABSTRAKSI 2. DASAR TEORI DAN METODOLOGI


Pengurutan data (sorting) adalah suatu proses 2.1. Algoritma Sorting
menyusun kembali himpunan objek menggunakan Ada banyak sekali algoritma sorting, setiap algoritma
aturan tertentu. Pengurutan data sendiri terdapat memiliki ciri khasnya masing – masing. Setiap
dua jenis, yaitu dari elemen terkecil ke terbesar algoritma memiliki keunggulan dan kelemahannya.
(ascending) dan dari yang terbesar ke terkecil Keunggulan dan kelemahan ini akan berpengaruh
(descending). Beragam algoritma sorting telah pada tingkat seberapa optimum suatu algoritma ketika
ditemukan, antara lain : heapsort, quicksort, dan dijalankan nanti terlebih untuk mengerjakan
radix sort. Dari ketiganya, radix sort merupakan pengurutan pada data yang jumlahnya besar.
algoritma yang paling efisien karena mampu
memangkas waktu eksekusi juga meminimalkan 2.1.1. Heap Sort
penggunaan memori. Heap sort merupakan salah satu algoritma sorting
yang memanfaatkan struktur data complete binary
Kata kunci : sorting, quick sort, heap sort, radix sort, tree. Proses Heap Sort dapat dijelaskan sebagai
kompleksitas berikut (Sharma, Vendana. et.al. 2008) :

1. Representasikan Heap dengan n elemen dalam


1. PENDAHULUAN sebuah array A[n]
Dalam dunia Struktur Data dan Algoritma, ada banyak 2. Elemen root tempatkan pada A[1]
algoritma pengurutan, masing – masing algoritma 3. Elemen A[2i] adalah node kiri dibawah A[i]
memiliki keunggulan dan kelemahan. Pemilihan 4. Elemen A[2i+1] adalah node kanan dibawah
algoritma yang sesuai untuk suatu kasus akan A[i]
mempercepat proses eksekusi atau menghemat 5. Ambil nilai root (terbesar) A[1..n-1] dan
memori. Misalkan, dengan tipe data Array numerik pertukarkan dengan elemen terakhir dalam
yang hanya memiliki 10 elemen, tentu lebih baik array, A[n]
menggunakan algoritma yang hemat memori, seperti 6. Bentuk Heap dari (n-1) elemen, dari A[1]
buble sort. Tetapi untuk data yang besar, tentu buble hingga A[n-1]
sort bukan yang terbaik. 7. Ulangi langkah 5 dimana indeks terakhir
berkurang setiap langkah.
Pemilihan algoritma sangat bergantung pada tingkat
kompleksitasnya. Semakin kecil nilai Big O Algoritma ini memiliki kompleksitas waktu yang
(kompleksitas) dari sebuah algoritma, semakin cepat stabil, seperti ditunjukan pada tabel 2.1.
waktu eksekusinya, tentu akan lebih baik dibanding (https://www.bigocheatsheet.com)
algoritma yang memiliki Big O besar.
Best Average Worst
Perbedaan kecepatan eksekusi akan terasa jika
dilakukan pengujian data yang sesungguhnya. Oleh Ω(n log(n)) Θ(n log(n)) O(n log(n))
karena itu, laporan ini akan membahas temuan dari Tabel 2.1 Kompleksitas Waktu Heap Sort
pengujian tiga algoritma sorting untuk mengetahui
algoritma yang terbaik. Algoritma yang dipilih adalah
heap sort, radix sort, dan heap sort.
2

Dimana n merupakan jumlah elemen yang akan Algoritma ini memiliki kompleksitas yang kurang
diurutkan. Sementara untuk komplesitas ruangnya baik, seperti ditunjukan pada tabel 2.1.
adalah O(1) yang berarti konstan, atau dengan kata (https://www.bigocheatsheet.com)
lain, algoritma ini sangat efisien dalam penggunaan
memori. Best Average Worst

2.1.2. Radix Sort Ω(n) Θ(n log(n)) O(n^2)


Radix sort merupakan algoritma sorting yang
mengurutkan data dengan mengelompokannya Tabel 2.3 Kompleksitas Waktu Quicksort
berdasarkan digit – digit dari tiap data pada posisi
Dimana n adalah jumlah elemen yang akan
yang sama. Berbeda dengan algoritma heapsort dan
diurutkan. Meskipun kompleksitas waktu rata –
quicksort, radix sort bukanlah algoritma sorting
ratanya kurang baik, algoritma ini cukup efektif
yang comparison (yang memerlukan struktur data
terutama untuk data yang sedikit. Perlu diperhatikan
yang bisa dibandingkan seperti integer).
bahwa best case disini bergantung juga pada jumlah
Algoritma ini memiliki kompleksitas yang baik dan data, pada umumnya, meskipun best case namun
stabil, seperti ditunjukan pada tabel 2.1. jika jumlah datanya besar maka akan mendekati
(https://www.bigocheatsheet.com) waktu eksekusi rata – rata. Sementara dari sisi
kompleksitas ruang, algoritma ini memiliki space
Best Average Worst complexity sebesar O( log n ) lebih baik disbanding
radix sort, namun masih dibawah heap sort dalam
Ω(n.k) Θ(n.k) O(n.k) kasus data yang besar.

Tabel 2.2 Kompleksitas Waktu Radix Sort Dari perbandingan ketiga algoritma tersebut,
diprediksi bahwa algoritma yang paling cepat ketika
Dengan n merupakan jumlah elemen yang akan
dieksekusi adalah algoritma radix sort, sekaligus
diurutkan sementara k merupakan jumlah digit
algoritma yang memiliki efisiensi memori tertinggi.
terbanyak dari seluruh elemen. Untuk kompleksitas
ruangnya sendiri adalah O(n+k) alias linear. 2.2. Pengujian Algoritma
Sehingga kebutuhan memori tidak terlalu banyak. Untuk pengujian algoritma, akan dibuatkan file
masing – masing algoritma dengan 2 jenis data uji
2.1.3. Quicksort
yakni data random dalam modul program dan dataset
Quicksort merupakan algoritma divide and conquer,
yang disiapkan dalam file eksternal. Data random
algoritma ini akan memecah array yang besar
menggunakan modul dalam program memiliki
menjadi dua sub array yang lebih kecil. Selanjutnya
kelebihan yakni tidak perlu waktu eksekusi tambahan
tiap – tiap subarray akan disorting, kemudian
untuk membuka dan membaca file, sehingga
digabung kembali. Proses berikut menjelaskan
mendekati waktu eksekusi murni. Kelemahannya
langkah – langkah quicksort (Sonita, A. dan
adalah data yang dihasilkan akan selalu berbeda setiap
Nurtaneo, F. 2015).
kali program dijalankan sehingga untuk kasus data
1. Ambil sebuah elemen dari array, beri nama random melalui modul, dilakukan percobaan sepuluh
pivot. kali berturut – turut kemudian diambil rata – rata
waktu eksekusinya. Sementara data random yang
2. Urutkan kembali array sehingga elemen yang disimpan dalam file eksternal akan membutuhkan
lebih kecil dari pivot berada sebelum pivot dan waktu tambahan untuk membuka dan membaca file,
elemen yang lebih besar berada setelah pivot. tetapi akan lebih konkrit perbandingannya karena
Langkah ini disebut partition. setiap algoritma akan menggunakan data yang sama.
3. Secara rekursif, urutkan kembali sub-array Algoritma ditulis dalam bahasa C dengan sumber :
elemen yang lebih kecil dan sub-array elemen 1. heap sort
yang lebih besar. https://www.sanfoundry.com/c-program-
implement-heap-sort/
3

2. radix sort kasus ini, algoritma yang terbaik adalah


https://austingwalters.com/radix-sort-in-c/ algoritma radix sort.
3. quick sort 2. Dataset Kedua
https://beginnersbook.com/2015/02/quicksor Dataset ini berupa kumpulan nilai integer
t-program-in-c/ dengan urutan acak dari range 0 sampai
10000 sebanyak 260.000 elemen. Untuk
2.3. Media Pengujian kasus ini, algoritma yang terbaik adalah radix
Untuk menguji algoritma – algoritma ini, digunakan
sort.
laptop yang sama pada tiap pengujian dengan
3. Dataset Ketiga
spesifikasi sebagai berikut :
Dataset ini berupa kumpulan bilangan bulat
positif dengan urutan descending dari range
100.000 sampai 80.914 sebanyak 50.000
elemen. Untuk kasus ini, algoritma yang
terbaik adalah radix sort.
4. Dataset Keempat
Dataset ini menggunakan modul dalam
program untuk mengembalikan bilangan
acak sebanyak 200.000 elemen. Untuk kasus
ini, algoritma yang terbaik adalah radix sort.
Juga IDE Dev-C++ dengan compiler TDM-GCC
4.9.6 64 bit. 4. SIMPULAN
Dari ketiga jenis algoritma dengan 4 dataset yang
3. TEMUAN PERCOBAAN berbeda, radix sort menjadi algoritma dengan waktu
eksekusi yang tercepat. Hal ini wajar mengingat Big O
3.1. Hasil Perbandingan dari algoritma radix sort adalah O(k.n), sementara
Dari ketiga jenis algoritma yang dibandingkan, heap sort memiliki Big O sebesar O(n log n) dan
didapati perbedaan yang beragam untuk tiap kasus quicksort memiliki O(n log n) untuk kasus data terbaik
data yang diuji cobakan. Setiap pengujian dilakukan serta O(n2) untuk kasus terburuk. Hal ini sesuai dengan
dalam kondisi hardware dan software yang sama. dasar teori yang dikemukakan di awal, dimana radix
Perbandingan tersebut dapat dilihat pada tabel 3.1 sort akan memiliki waktu eksekusi yang tercepat dari
berikut. ketiga jenis algoritma yang diujikan.

Waktu Eksekusi (dalam sekon) DAFTAR RUJUKAN


radix heap quick Sharma, Vandana et.al. 2008. Performance Study of
sort sort sort Improved Heap Sort Algorithm and Other
Dataset1 Sorting Algorithms on Different Platforms.
0.07887 0.1364 0.09528
IJCSNS International Journal of Computer
Dataset2 0.08606 0.14810 0.09851 Science and Network Security, No.4 (8) : 101
Dataset3 - 105
0.04314 0.05062 1.24300
Dataset4 0.42092 0.49506 0.47388 Sonita, A. dan Nurtaneo, F. 2015. Analisis
Perbandingan Algoritma Bubble Sort, Merge
Tabel 3.1 Perbandingan Waktu Eksekusi Antar Algoritma
Sort, dan Quick Sort dalam Proses
Adapun dataset yang digunakan dijabarkan sebagai Pengurutan Angka dan Huruf. Jurnal
berikut : Pseudocode. No 2. (2) : 75 - 80
1. Dataset Pertama
Dataset ini adalah kumpulan nilai integer DAFTAR BACAAN
dengan urutan acak dari range 0 sampai Bentley, Jon. (1999). Programming Pearls. Addison-
13196 sebanyak 260.000 elemen. Untuk Wesley Professional.
4

Coulson, Benjamin. (2001). An Introduction to


Technical Report Writing. York University.
Canada

Nilsson, Stefan. (2000). "The fastest sorting


algorithm?". Dr. Dobb's Journal. 311 : 38 –
45.

Sedgewick, R. (1978). "Implementing Quicksort


programs". Comm. ACM. 21 (10): 847–857.

https://bigocheatsheet.com diakses pada 28 April


2018, pukul 07.30.

Anda mungkin juga menyukai