Anda di halaman 1dari 6

Konferensi Nasional Ilmu Sosial & Teknologi (KNiST)

Maret 2015, pp. 139~144

139

KOMPARASI ALGORITMA QUICKSORT DAN BUCKET


SORT PENGURUTAN DATA INTEGER MENGGUNAKAN
BAHASA C++
1 2 3
Mira Kusmira , Yani Sri Mulyani , Karsono
1
AMIK BSI Tasikmalaya
e-mail: mira.mik@bsi.ac.id
2
AMIK BSI Tasikmalaya
e-mail: yani.ymn@bsi.ac.id
3
AMIK BSI Tasikmalaya
e-mail: karsono.kso@bsi.ac.id

Abstrak
Pengurutan data atau sorting merupakan salah satu jenis operasi penting dalam
pengolaan data. Hampir setiap saat dalam kehidupan sehari-hari sering dijumpai permasalahan
permasalahan yang harus diselesaikan dengan melibatkan operasi pengurutan data,
Pengurutan data dapat diartikan juga sebagai tekhnik yang lebih jauhnya lagi digunakan
sebagai dari proses yang besar. Sehingga pengurutan data seharusnya bukanlah merupakan
masalah program yang komplek. Artikel ini memberikan pembaca sebuah perbandingan
diantara dua pengurutan algoritma yaitu algoritma quicksort dan algoritma bucketsort, yang
merupakan perbandingan yang mendasar dan tidak mendasar, dalam tampilan waktu dan
ruang. Bentuk data yang digunakan dalam artikel ini adalah sebuah tipe data interger
Pengujian yang dibawa dengan menggunakan dua tipe kondisi data, yang merupakan kondisi
kasus yang paling buruk dalam setiap algoritma, dan dua jumlah data, yang menampilkan
jumlah maksimal dan minimun dari sebuah data.

Keywords: quicksort,bucket sort,pseudocode, bahasa C++, kompleksitas waktu

1. Pendahuluan itu, dibutuhkan suatu algoritma yang dapat


Perkembangan teknologi dunia sangat pesat. mengurutkan data secara benar, efektif, dan
Hal ini terbukti dari kecepatan dan efisien.
kemudahan dalam penerimaan suatu Pengurutan data atau sorting merupakan
informasi. Informasi terbentuk dari hasil salah satu jenis operasi penting dalam
pemrosesan data. Di dalam buku Reference pengolaan data. Hampir setiap saat dalam
Model for an Open Archival Information kehidupan sehari-hari sering dijumpai
System (OAIS), data adalah suatu hal yang permasalahan permasalahan yang harus
dapat diterjemahkan dan direpresentasikan diselesaikan dengan melibatkan operasi
ke dalam bentuk formal agar dapat digunakan pengurutan data. Begitu pentingnya operasi
untuk komunikasi, interpretasi, atau tersebut, sehingga sampai saat ini telah
pengolahan informasi. Seiiring banyak dikembangkan metode-metode
berkembangnya teknologi, perkembangan pengurutan data dan mungkin akan tetap
jumlah data yang dapat kita olah semakin bermunculan metode-metode baru.
besar sehingga dibutuhkan suatu cara untuk Setiap algoritma pengurutan memiliki
dapat mengolah data secara efisien dan pendekatan dan metode yang berbeda-beda
efektif. dalam menjalankan fungsinya. Secara garis
Pengolahan data erat kaitannya dengan besar, algoritma pengurutan dapat
pencarian data, dimana dalam pencarian dikelompokkan menjadi dua kategori, yaitu
tersebut terdapat proses memilah-milah data algoritma pengurutan berbasis perbandingan
sesuai kebutuhan. Pencarian data yang (comparison based) dan tidak berbasis
efektif dan efisien tidak dapat dilepaskan dari perbandingan (non-comparison based).
faktor keterurutan data. Data yang sudah algoritma pengurutan, atau yang biasa
terurut akan mempermudah dan dikenal sebagai Sorting Algorithm, telah
mempercepat pencarian data. Oleh karena muncul sejak tahun 1956. Algoritma tersebut

Diterima 15 Januari 2015; Revisi 18 Februari 2015; Disetujui 15 Maret 2015


ISBN: 978-602-61242-3-4

dikenal dengan nama Sorting by Exchange. data, sedangkan sort adalah bagian yang
Seiiring berjalannya waktu, berbagai macam melakukan proses rekursif. Semakin besar
metode dalam algoritma pengurutan terus jumlah data, maka kompleksitas ruang suatu
ditemukan sampai saat ini. beberapa contoh algoritma rekursif akan semakin besar.
dari algoritma pengurutan yang populer, yakni Quicksort menggunakan metode divide and
Bubble Sort, Insertion Sort, Selection Sort, conquer untuk membagi suatu list menjadi
Shell Sort, Merge Sort, Heapsort, Quicksort, dua
dan Bucket Sort. sub-list. Langkah-langkahnya adalah sebagai
Algoritma pengurutan juga berikut.
diimplementasikan dalam penggunaan 1. Pilih salah satu elemen, bernama pivot,
algoritma pencarian yang efektif. Salah satu dari list.
algoritma pencarian yang mengharuskan 2. Melakukan pengurutan pada list sehingga
untuk semua elemen yang memiliki nilai lebih
menggunakan algoritma pengurutan dalam kecil dari pivot diletakkan sebelum pivot,
implementasinya adalah Binary Search. Tipe sedangkan semua elemen yang memiliki
data yang diurutkan beragam, mulai dari nilai lebih besar dari pivot diletakkan
bilangan bulat, bilangan bertipe floating point, setelah pivot. Elemen yang memiliki
karakter, ataupun string. Namun, tidak semua kesamaan nilai dengan pivot dapat
algoritma pengurutan dapat mengurutkan diletakkan sebelum ataupun sesudah
seluruh tipe data. Beberapa algoritma pivot. Operasi ini dinamakan operasi
pengurutan hanya dapat digunakan dengan partisi.
tipe data tertentu. Heineman, Selkow, dan 3. Melakukan pengurutan pada sub-list yang
Pollice (2008) menyatakan salah satu contoh lebih kecil dan besar sampai sub-list
algoritma non-comparison based yang hanya berukuran 1. Hal ini dapat dilakukan
cocok digunakan untuk mengurutkan data secara rekursif maupun non-rekursif.
bilangan saja yaitu algoritma Bucket sort. 4. Menggabungkan list. Berdasarkan hasil
Algoritma quick sort adalah algoritma pemaparan langkah-langkah
pengurutan data menggunakan metode sebelumnya.
patition exchange sort, diperkenalkan oleh Bucket Sort
(C.A.R. Hoare pada tahun 1960). Sementara Bucket sort merupakan salah satu bentuk
Algoritma Bucket Sort pengurutan yang algoritma divide concuer melalui metode
membagi N data ke dalam berbagai ember, partisi dan berjalan dalam keadan linier time
atau bucket, metode yang digunakan yaitu (Wilkinson & Allen, 2005). Secara teoritis
dengan insertion sort. proses pengurutan dilakukan dengan
Quick Sort membagi dan memecah humpunan array ke
Quick Sort merupakan suatu algoritma dalam beberapa ember virtual secara
pengurutan data yang menggunakan teknik merata. Adapin ember yang dijadikan partisi n
pemecahan data menjadi partisi, sehingga dayta kemudian diurutka secara individual,
metode ini disebut juga dengan nama menggunakan algoritma sorting yang
partition exchange sort. Untuk memulai berbeda atau melalui penerapan Bucket Sort
irterasi pengurutan,, pertama tama sebuah secara rekursif. Ember virtual yang merupakn
elemen didpilih dari data, kemudan elemen – partisi atasa n array dan merupakan proses
elemen data akan di urutkan di atur acak yang mendistribusikan elemen seragam
sedemikian rupa. pada interval [0,1], dimana pembagian
Algoritma quick sort memiliki kompleksitas tersebut dilakukan merata sama besar.
0(n log n) dimana pada prakteknya lebih Dengan asumsi input dalam n elemen pada
cepat dari algoritma pengurutan lainnya. array a, untuk masing –masing A memenuhi
Namun kemungkinan terburuknya, algoritma 0 ≤ A [i] ≤ I, sehingga membutuhkan array
quick sortini dapat memiliki kompleksitas bantu B yang merupakan ember sub interval
0(n2). Meskipun ini sangat langka terjadi. (Wilkinson & Allen,2005).
Quicksort dengan pendekatan rekursif tidak Langkah-langkah pada pemrosesan data
membutuhkan struktur data khusus, seperti dengan algoritma Bucket sort adalah sebagai
stack, karena setiap kelompok akan berjalan berikut.
secara rekursif. Sedgewick R. dan Wayne K. 1. Membuat suatu inisial array (ember)
(2011) menyatakan bahwa terdapat dua kosong sebanyak jumlah array yang
bagian pada pendekatan rekursif, yaitu sort diberikan.
dan partisi. Partisi merupakan bagian yang
melakukan tugas untuk pengelompokkan

KNiST, 30 Maret 2015


140
ISBN: 978-602-61242-3-4

2. Memasukan setiap objek pada array yang Prinsip kerja insertion sort adalah :
ingin diurutkan ke dalam ember yang 1. pengecekan mulai dari data ke-1 sampai
sesuai. ke-n
3. Melakukan pengurutan pada setiap objek 2. bandingkan data ke-1 (1=data ke-2s/d
yang ada di tiap ember, dapat dilakukan data ke-n)
dengan algoritma lain, seperti Insertion 3. bandingkan data jika lebih kecil maka
Sort. data ke-1 tersebut dengan data
sebelumnnya (i-1), jika lebih kecil maka
2. Metode Penelitian data trsebut dapat disisipkan kedata awal
Metode yang digunakan dalam penelitian kali sesuai dengan posisi yang seharusnya.
ini adalah dengan menggunakan metode Contoh: insertion sort
pengurutan data diantaranya : mengunakan Data: 22 10 15 3 8 2
Quick Sort dan Bucket Sort. Data tersebut Iterasi 1
bertipe integer dan diambil secara acak untuk 1 2 3 4 5 6
Quick Sort sebanyak 10 Data dan Bucket Langkah 1 : 22 10 15 3 8 2
Sort Sebanyak 5 Data. Langkah 2 : 10 22 15 3 8 2
Metode Quick Sort Langkah 3 : Ulangi langkah 1 dan 2
Sebagai contoh terdapat data 23, 45, 12, 24,
56, 34, 27, 23, 16 maka ilustrasi Iterasi 2
pengurutannya adalah sebagai berikut: Langkah 1 : 10 22 15 3 8 2
Langkah 2 : 10 15 22 3 8 2
Langkah 3 : Ulangi langkah 1 dan 2

Lakukan iterasi selanjutnya samapai iterasi


ke-6
Setiap ada pemindahan, maka elemen yang
sudah ada akan di insert sehingga akan
bergeser kebelakang.
Pseudocode untuk Bucket Sort dengan
menggunakan bahasa pemrograman C++
adalah sebagai berikut:
Gambar 1. Ilustrasi Quick Sort Function bucketsort (array A,
n) is n < -length [A]
Pseudocode untuk Quick Sort adalah sebagai
bucket new array of n empaty lists
berikut
Function Quicksort(array) for I = 1 to n do
Var list less, greater
insert array [i] into
If length (array) < 1 buckets[n*A[i]/ max value)]
Return array // an array of zero or end for
One elements is already sorted
for I =0 to n – 1 do
Select and remove a pivot value pivot sort list buckets[i]with insertion
Form array
sort,as example
end for
For each x in array
If x < pivot then append x to concatenate list of buckets[0]
Less else append x to greater buckets[n-1] together
end function
Return concatenate(quicksort(less),
Pivot, quicksort(greater)) 3. Pembahasan
End function Implementasi ke dalam bahasa pemrograman
C++ untuk beberapa metode pengurutan data
3.2 Metode Bucket Sort
menggunakan compailer Dev C++ versi 5.11
Metode bucket sort dengan
pada platform Windows 10x64
menggunakan insertion sort. Prinsif dasar
Pengujian ini bertujuan untuk mengetahui dan
insertion adalah secara berulang –ulang
membandingkan keceptan eksekusi data
menyisipkan / memasukkan setiap elemen, antara algoritma Quick Sort dengan
kedalam posisinya / tempatnya yang benar. menggunakan bahasa pemrograman C++

KNiST, 30 Maret 2015


141
ISBN: 978-602-61242-3-4

Metode Quick Sort int i;


Tabel 1. Source code Quick Sort
Menggunakan Bahasa C++
//Memasukkan data yang belum terurut
printf("DATA SEBELUM TERURUT
#include <stdio.h>
: \n");
#include <conio.h>
for(i=1; i<MAX; i++)
#include <iostream.h>
{
#define MAX 11
printf("Data ke %d : ", i);
#define MaxStack 11
scanf ("%d", &Data[i]);
int Data[MAX];
} QuickSortNonRekursif();
// Prosedur menukar data
//Data setelah terurut
void Tukar (int *a, int *b)
printf("\nDATA SETELAH
{
TERURUT");
int temp;
for(i=1; i<MAX; i++)
temp = *a;
{ printf("\nData ke %d :
*a = *b;
%d ", i, Data[i]);
*b = temp;
}
}
getch();
// Prosedur pengurutan metode Quick Sort
}
void QuickSortNonRekursif()
{
}
struct tump {
int Kiri;
int Kanan; Tabel 2. Hasil Pengujian Metode Quick Sort
Tumpukan[MaxStack];
int i, j, L, R, x, ujung = 1; DATA SEBELUM TERURUT
Tumpukan[1].Kiri = 0; Data ke 1 : 2
Tumpukan[1].Kanan = MAX-1; Data ke 2 : 3
while (ujung!=0){
Data ke 3 : 1
L = Tumpukan[ujung].Kiri;
R = Tumpukan[ujung].Kanan; Data ke 4 : 3
ujung--; Data ke 5 : 4
while(R > L){ Data ke 6 : 3
i = L; j = R; Data ke 7 : 2
x = Data[(L+R)/2]; Data ke 8 : 4
while(i <= j){ ]) Data ke 9 : 1
while(Data[i] < x)
i++; while(x <
Data[jj--; DATA SETELAH TERURUT
if(i <= j){ Data ke 1 : 1
Tukar(&Data[i], &Data[j]); Data ke 2 : 1
i++; Data ke 3 : 2
j--; Data ke 4 : 2
Data ke 5 : 3
} Data ke 6 : 3
} Data ke 7 : 3
if(L < i){ Data ke 8 : 4
ujung++; Tumpukan[ujung].Kiri = i; Data ke 8 : 7
Tumpukan[ujung].Kanan = R; Data ke 9 : 8
} ……………………………………….
R = j;
} Process exited after 8.669 seconds with
} return value
} Press any key to continue
main()
{

KNiST, 30 Maret 2015


142
ISBN: 978-602-61242-3-4

Berdasarkan logika proses pengurutan data


Metode Bucket Sort dengan menggunakan algoritma Quick Sort
Tabel 4.3 Source Code Bucket Sort dan Bucket Sort, maka dapat disimpulkan
Menggunakan Bahasa C++ sebagai berikut.
1. Hasil pengujian Algoritma Bucket Sort
lebih sesuai digunakan ketika data yang
ingin di urutkan berjumlah sedikit.
2. Hasil pengujian Algoritma Quick Sort
lebih sesuai untuk digunakan pada data
yang berjumlah banyak.
3. Algoritm Bucket Sort membutuhkan
tempat atau memory yang lebih besar
dibandingkan algoritma Quick Sort yang
hanya melakukan perbandingan rekursif
4. Dari hasil Pengujian pengurutan data
integer menggunakan pemograman C++
waktu yang diperlukan Quick Sort adalah
8.669 second sedangkan Bucket Sort
hanya 7.828
5. Jadi Bucket Sort lebih cepat
dibandingkan Quick Sort.

Referensi
Astrachan owen Bubble Sort : An
Archaeological Algorithmmic
Analysis. S12GCSE ’03 Proceedings
th
of the 34 SIGCSE technical
Tabel 4.4 Hasil Pengujian Bucket Sort
symposium on Computer science
education, 2003; Hal. 1-5
DATA SEBELUM TERURUT
Enter the size of array : 5
Canaan C Garai M.S, Daya M. Popular
Enter the 5 elements to be sorted : Sorting Algorithms. World Applied
43521 Programming Journal, 2011; 1(1): 62-
71
The array of elements before sorting :
43521 Drozdek, A. 2001. Data Structures and
The array of elements after sorting : Algorithms in C++. Brooks/Cole Thomson
1234 Learning. California. USA.

………………………………………. Heineman George T., Selkow Stanley, Pollice


Process exited after 7.828 seconds with Gary. Algorithms in a Nutshell. O’Reilly
return value 0 Media; 2008.
Press any to continue…….
Horstmann, C. 2008. C++ for Everyone. Wiley
Publishing. San Jose, USA.
4. Simpulan
Metode menggunakan Algoritma Teknik- K. Andri, 2009, Struktur Data dengan C++.
teknik pengurutan data memang cukup Yogyakarta, Penerbit Graha ilmu.
beragam, namun demikian tentunya dalam
prosesnya ada metode mempunyai kelebihan Kristanto, A. 2009. Algoritma dan
dan kekurangan sendiri sehingga metode Pemrograman dengan C++. Graha Ilmu.
yang telah dibahas sebelumnya diatas masih Yogyakarta.
dapat diterapkan tergantung dari masalah
yang sedang dihadapi. Paling tidak dengan Robert Lafore. Data Structures & Algorithms
pemahaman algoritma secara sederhana in Java. USA: Sams Publishing;
tersebut lebih mudah dalam menyelesaikan 2003.
setiap permasalahan yang menyangkut
proses pengurutan data .

KNiST, 30 Maret 2015


143
ISBN: 978-602-61242-3-4

Rosen, k, h. Discrete Mathematics and Its


th
Applications (7 ed.). New York:
McGRraw-Hill; 2012

Sareen Pankaj. Comparison of Sorting


Algorithms (On the Adanced in
Computer Science and Software
Engineering, 2013; 3 (3): Hal. 522-
532

Sedgewick R., Wayne K Algorithms (Fourth


Edition). Addison – Wesley
Professional;2011

KNiST, 30 Maret 2015


144

Anda mungkin juga menyukai