Implementasi dan Analisis Algoritma Bucket Sort, Strand Sort dan Quick Sort 2 Pivot Dalam Pensortiran Data yang Berjumlah Banyak

6

BAB 2
LANDASAN TEORI

2.1 Pengertian Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis dan logis. Kata Logis merupakan kata kunci dalam Algoritma.
Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai
salah atau benar (Rosa dan Shalahuddin 2010). Kriteria Algoritma yang baik :
a. Tepat, benar, sederhana, standar dan efektif.
b. Logis, terstruktur dan sistematis.
c. Semua operasi terdefinisi.
d. Semua proses harus berakhir setelah sejumlah langkah dilakukan.
e. Ditulis dengan bahasa yang standar dengan format pemrograman agar mudah
untuk diimplementasikan dan tidak menimbulkan arti ganda.
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu
komputer yang diacu dalam terminologi algoritma. Namun, jangan beranggapan
algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari pun
banyak terdapat proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat
kue atau masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai

algoritma. Pada setiap resep selalu ada urutan langkah-lankah membuat masakan. Bila
langkah -langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibuibu yang mencoba suatu resep masakan akan membaca satu per satu langkah-langkah
pembuatannya lalu ia mengerjakan proses sesuai yang ia baca. Secara umum, pihak
(benda) yang mengerjakan proses disebut pemroses (processor). Pemroses tersebut
dapat berupa manusia, komputer, robot atau alat-alat elektronik lainnya. Pemroses
melakukan suatu proses dengan melaksanakan atau mengeksekusi algoritma yang
menjabarkan proses tersebut(Munir 2007).

Universitas Sumatera Utara

7

2.2 Algoritma Pengurutan ( Sorting )
Algoritma merupakan urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu
untuk memecahkan suatu masalah dalam rentang waktu tertentu. Sedangkan
pengurutan adalah proses pengaturan sekumpulan objek berdasarkan urutan atau
susunan

tertentu, dapat berupa pengurutan menaik (ascending) atau menurun


(descending).

Contoh, sebuah larik atau array terdiri dari kumpulan bilangan : [3,12,1,50,33,5,28]


Hasil pengurutan menaik (ascending) : [1,3,5,12,28,33,50]



Hasil pengurutan menurun (descending) : [50,33,28,12,5,3,1]

Sebuah algoritma dikatakan baik jika menghasilkan nilai yang benar, efektif dan
efisien. Efektif yaitu tepat sasaran, jelas dan tidak rancu dalam menjalankan aksiaksinya serta menghasilkan data yang benar. Efisien yaitu penghematan proses dari
sebuah algoritma, seperti running time dan penggunaan memori. Metode atau
algoritma pengurutan dapat diklasifikasikan menjadi :
1. Metode atau algoritma pengurutan internal, yaitu pengurutan yang dilakukan
di dalam larik itu sendiri. Datanya disimpan di dalam memori komputer.
2. Metode atau algoritma pengurutan eksternal, yaitu pengurutan yang datanya
disimpan di dalam disk storage. Metode ini disebut juga pengurutan arsip.
Sedangkan berdasarkan kestabilan (stability), algoritma pengurutan dapat dibagi

menjadi dua jenis, yaitu :
1. Metode pengurutan stabil (stable sorting algorithm), merupakan algoritma
pengurutan yang menjaga/mempertahankan (maintenance) urutan dari
beberapa elemen array yang bernilai sama.
2. Metode pengurutan tidak stabil (non stable sorting algorithm), merupakan
metode pengurutan yang tidak menjaga/mempertahankan (maintenance) urutan
dari beberapa elemen array yang bernilai sama. Dengan kata lain, urutan
beberapa elemen yang sama berbeda antara sebelum dan sesudah pengurutan.
Algoritma memiliki dua skema, yaitu iteratif dan rekursif. Iteratif yaitu algoritma
yang melakukan perulangan biasa, sedangkan rekursif adalah algoritma yang

Universitas Sumatera Utara

8

melakukan perulangan dengan melakukan pemanggilan terhadap dirinya sendiri.
Contoh algoritma pengurutan yang termasuk dalam skema iteratif, yaitu pengurutan
apung (bubble sort) dan selection sort, Contoh algoritma pengurutan yang termasuk
dalam skema rekursif, yaitu pengurutan merge (merge sort), pengurutan heap (heap
sort) dan pengurutan cepat (quick sort). Tidak semua algoritma tersebut hanya

memiliki satu skema, misalnya algoritma pengurutan seleksi atau selection sort yang
dapat menggunakan skema rekursif, namun di dalam penelitian ini selection sort yang
dibahas menggunakan skema iteratif (Fanani 2008).
2.3 Kompleksitas Algoritma
Efisiensi sebuah algoritma tergantung dari beberapa hal, diantaranya adalah :


Kinerja CPU



Kinerja Memori



Kinerja Disk



Kinerja Jaringan


Menurut Rao dan Ramses (2012), bahwa Algoritma memiliki kompleksitas yang
merupakan acuan utama utama untuk mengetahui kecepatan dari sebuah algoritma.
Kompleksitas dibagi menjadi tiga, yaitu:
1. Best case (Ω), yaitu

kompleksitas algoritma dimana algoritma tersebut

berjalan dalam kondisi terbaik.
2. Average case (� ), yaitu kompleksitas algoritma dimana algoritma tersebut
berjalan dalam kondisi sedang, biasanya inputnya secara acak.
3. Worst case (Ο), yaitu

kompleksitas algoritma dimana algoritma tersebut

berjalan dalam kondisi terburuk.

2.4 Growth Fuction
Kinerja sebuah algoritma biasanya di ukur dengan mengacu pada kondisi terburuknya,
yaitu worst case yang dilambangkan dengan notasi Big O. Notasi Big O adalah fungsi

yang berkaitan dengan kelajuan proses dan kelajuan pertambahan data (Suryani 2013).

Universitas Sumatera Utara

9

Tabel 1.1 Tabel Notasi Big O
Notasi
O(1)

Nama
Konstan

Contoh Aplikasi
Menentukan apakah suatu bilangan ganjil atau
genap

O(log * n)

Iterasi Logaritmik


Algoritma pencarian Hopcraff dan Ullman untuk
himpunan disjoint

O(log n)

Logaritmik

Pencarian dalam list terurut dengan Binary
Search Algorithm

O((log n)c)

Polilogaritmik

Menentukan bilangan prima

dengan

AKS


primality test
O(n)

Linear

Pencarian dalam list tidak terurut

O(n log n)

Linearitmik

Mengurutkan list dengan Heapsort

O(n2)

Kuadratik

Mengurutkan list dengan Insertion Sort


O(nc),c>1

Poliomial

Pencarian shortest path dengan algoritma Floyd
Warshall

O(cn)

Eksponensia

Pencarian solusi untuk traveling salesmen
problem

O(n!)

Faktorial

Menyelesaikan


traveling

salesmen

problem

dengan menggunakan brute force
O(2cn)

Dobel Eksponensial

Pencarian himpunan lengkap dari AC-unifiers
(associative-commutative unifiers)

Universitas Sumatera Utara

10

2.5


Notasi Asimptotik

Notasi asimptotik digunakan untuk menentukan kompleksitas suatu algoritma dengan
melihat waktu tempuh (running time) sebuah algoritma. Waktu tempuh algoritma
merupakan fungsi : N → R suatu algoritma dengan algoritma lainnya. Notasi
asimptotik dapat dituliskan dengan beberapa simbol, yaitu :


Notasi Big O, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas.



Notasi Little o, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas
atas namun tidak secara ketat terikat (not asymptotically tight).



Notasi Theta (�), yaitu notasi asimptotik sebuah fungsi algoritma untuk batas
atas dan bawah.



Notasi Omega ( ), yaitu notasi asimptotik sebuah fungsi algoritma untuk
batas bawah, notasi ini berlawanan dengan notasi little-o.

2.6 Algoritma Bucket Sort
Algoritma Bucket Sort merupakan salah satu bentuk algoritma devide & conguer
melalui metode partisi dan berjalan dalam keadaan linier time (Wilkinson & Allen,
2005). Secara teoritis proses pengurutan dilakukan dengan membagi dan memecahkan
himpunan array kedalam beberapa ember virtual secara merata. Algoritma devide and
conguer sudah lama diperkenalkan sebagai sumber dari pengendali proses paralel,
karena masalah-masalah yang terjadi dapat diatasi secara independen. Banyak
arsitektur dan bahasa pemrograman paralel mendesain implementasinya (aplikasi)
dengan struktur dasar dari algoritma devide & conguer. Devide and conguer adalah
varian dari beberapa strategi pemrograman top down, tetapi yang paling istimewa
dalam hal ini adalah dengan membuat sub-sub problem dari problem yang besar, oleh
karena itu strategi ini ditunjukkan secara berulang-ulang (rekursiv). Sebagaimana
disebutkan algoritma perulangan, dibutuhkan sebuah kondisi untuk mengakhiri
perulangan tersebut. Biasanya untuk mengecek apakah problem sudah cukup kecil
untuk diselesaikan dengan metodenya langsung.

Universitas Sumatera Utara

11

Proses pengurutan yang dilakukan dengan menggunakan algoritma bucket sort
adalah dengan cara membagi dan memecahkan himpunan array ke dalam beberapa
ember (bucket) virtual secara merata. Setelah selesai maka dikumpulkan kembali ke
array aslinya, sehingga mendapatkan susunan array yang sudah terurut.

Cara kerja algoritma bucket sort dapat dijelaskansebagai berikut :


Tentukan array yang ingin diurutkan.



Tentukan jumlah bucket dan rentang masing-masing bucket.



Masukkan array tersebut ke dalam bucket yang telah ditentukan.



Di dalam masing-masing bucket, array tersebut di urutkan.



Setelah itu keluarkan hasil urutan dari dalam bucket dan kembalikan ke array
awal.

Kelebihan dari Bucket Sort:
1. Sebuah algortima yang stabil
2. Prosesnya cepat.
3. Hanya berlaku pada kisaran 0 sampai nilai maksimum (M).
4. Lebih terkhusus, dapat digunakan ketika kuncinya dapat digunakan sebagai
penghitungan.

2.6.1 Pseudocode Algoritma Bucket Sort
Tempt = array[arr.length][arr.length];
For (i=0, i