Anda di halaman 1dari 10

STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661

Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

ANALISIS KOMPLEKSITAS RUANG DAN WAKTU TERHADAP LAJU


PERTUMBUHAN ALGORITMA HEAP SORT, INSERTION SORT DAN
MERGE DENGAN PEMROGRAMAN JAVA
Rizki Rizkyatul Basir
Program Studi Teknik Informatika, Universitas Indraprasta PGRI
rizkyatulbasir@gmail.com

Submitted March 26, 2020; Revised July 7, 2020; Accepted August 3, 2020

Abstrak
Peran algoritma dalam perangkat lunak atau pemrograman sangat penting, sehingga perlu untuk
memahami konsep dasar dari algoritma. Kajian implementasi dan performa proses pengurutan
menggunakan algoritma heap sort, insertion sort dan merge sort. Metode penelitian untuk tahap
pertama, ketiga algoritma tersebut diimplementasikan untuk mengurutkan sejumlah angka yang
dilakukan oleh pengguna, pada tahap kedua kode sumber untuk ketiga algoritma tersebut diubah untuk
dapat mengurutkan angka yang dihasilkan secara acak dengan jumlah angka sebanyak permintaan dari
pengguna. Untuk mengetahui seberapa baik performa dalam mengurutkan data, maka dalam tahap
terakhir ketiga algoritma tersebut mengurutkan sejumlah angka acak dengan rentan jumlah yang sudah
ditentukan dan kemudian hasilnya dibandingkan. Eksperimen yang sudah dilakukan dan berdasarkan
analisis, heap sort merupakan salah satu metode pengurutan data yang tergolong mempunyai
kecepatan tinggi, dimana kompleksitas dan kecepatan waktu pengurutan yang dibutuhkan untuk proses
pengurutan menggunakan algoritma insertion sort dan merge sort yang menunjukan kurang konsisten
tehadap kompleksitas ruang dan waktu. Berdasarkan hasil tabel dan data terhadap jumlah data,
menunjukan bahwa algoritma heap sort memberikan waktu proses yang sangat konsisten dalam
peningkatan lama waktu proses terhadap jumlah data.
Kata Kunci : Kompleksitas Algoritma, Insertion Sort, Merge Sort, Heap Sort, Pemrograman Java

Abstract
The role of the algorithms in software or programming is very important, so it is necessary to
understand the basic concepts of the algorithm. Study the implementation and performance of the
sorting process using heap sort, insertion sort and merge sort algorithms. The research method for
the first stage, the three algorithms are implemented to sort the numbers made by the user, in the
second stage the source code for the three algorithms is changed to be able to sort randomly
generated numbers with as many numbers as the request from the user. To find out how well the
performance in sorting the data, then in the last stage the three algorithms sort random numbers with
a predetermined vulnerable number and then the results are compared. Experiments that have been
carried out and based on the analysis, heap sort is one of the data sorting methods that are classified
as having a high speed, where the complexity and speed of the sorting time needed for the sorting
process uses insertion sort and merge sort algorithms which show less consistency in the complexity
of time and space. Based on the results of tables and data on the amount of data, shows that the heap
sort algorithm gives a very consistent processing time in increasing the processing time to the amount
of data.
Key Words : Algorithm Complexity, Insertion Sort, Merge Sort, Heap Sort, Java Programming

1. PENDAHULUAN secara acak atau tidak teratur menjadi urut


dan teratur menurut suatu aturan tertentu.
Dalam kehidupan sehari-hari komputer
[11]. Proses tersebut diimplementasikan
sering digunakan untuk mengurutkan
dalam berbagai macam aplikasi dan
sekumpulan nilai. Sorting adalah proses
pengurutan dapat berupa nilai, objek atau
pengurutan data yang sebelumnya disusun
nama. Pada aplikasi yang berhubungan

109
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

dengan data yang dapat diurutkan, seperti dan ruang memori yang diperlukan oleh
Nomor Induk Mahasiswa, nilai, nomor ID suatu algoritma ketika algoritma tersebut
sebuah barang inventaris dan lain dijalankan atau dieksekusi. Sesuai dengan
sebagainya, untuk contoh penerapannya pengertian di atas, kompleksitas algoritma
berupa rincian sesuai urutan tanggal dan terbagi atas dua macam yaitu kompleksitas
jam pada perbankan, daftar hadir yang waktu dan kompleksitas ruang.
diurutkan berdasarkan nomor induk dan Kompleksitas waktu diukur dari jumlah
daftar pustaka yang diurutkan sesuai abjad tahapan komputasi yang dibutuhkan untuk
pengarang ataupun buku disebuah menjalankan program sebagai fungsi dari
perpustakaan. Fungsi-fungsi statistic jumlah data n (sebagai ukuran masukan).
seperti median dan pembuatan kuartil data Sedangkan kompleksitas ruang diukur dari
(quarter), detil dan (percentile) memori yang digunakan oleh struktur data
mensyaratkan data untuk diurutkan terlebih yang terdapat di dalam algoritma sebagai
dahulu. fungsi dari jumlah data n (sebagai ukuran
masukan).
Algoritma adalah deretan instruksi yang
jelas untuk memecakan masalah, yaitu Dengan menggunakan besaran
untuk memperoleh keluaran yang kompleksitas waktu dan ruang algoritma,
diinginkan dari suatu masukan [7]. akan dapat ditentukan laju pertumbuhan
Beberapa macam algoritma dibuat karena waktu dan ruang yang diperlukan
proses sorting tersebut sangat mendasar algoritma dengan meningkatnya jumlah
dan sering digunakan. Oleh karena itu data (n). Kompleksitas ruang sering
pemahaman atas algoritma-algoritma yang dikaitkan dengan struktur data yang
ada sangatlah berguna. Banyak metode digunakan untuk mengimplementasikan
pada proses pengolahan data, salah satu algoritma. Sedangkan struktur data yang
diantaranya adalah metode pengurutan digunakan dipengaruhi secara langsung
(sorting), pengurutannya secara urut naik oleh ukuran memori komputer. Dengan
(ascending) dan pengurutan secara urut berkembangnya teknologi perangkat keras
turun (descending). Metode-metode komputer sekarang ini masalah ukuran
pengurutan data pun ada berbagai jenis. memori tidak lagi menjadi persoalan kritis
Mulai dari binary sort, insertion sort, karena komputer sekarang mempunyai
merge sort, heap sort, buble sort dan lain- ukuran memori yang besar dibandingkan
lain. dengan jaman dahulu waktu masih
menggunakan mainframe. Untuk setiap
Masing-masing jenis algoritma memiliki
mesin, hal ini ditemukan bahwa pilihan
berbagai tingkat efektivitas dan efektivitas
algoritma tergantung pada jumlah elemen
algoritma dapat diukur dengan berapa
yang akan diurutkan [8]. Namun demikian
banyak waktu dan ruang (space atau
dari segi banyaknya langkah yang
algoritma memori) yang diperlukan untuk
diperlukan dalam mengurutkan data tetap
menjalankan algoritma, efektif algoritma
menjadi pertimbangan efisiensi. Selain itu
yang dapat meminimalkan kebutuhan
faktor waktu juga menjadi pertimbangan
ruang dan waktu. Namun membutuhkan
yang tidak bisa dielakkan lagi. Dari uraian
waktu dan ruang suatu algoritma
di atas, maka untuk mengetahui tingkat
bergantung pada jumlah data yang diolah
kecepatan dan tingkat efisiensi suaru
dan algoritma yang digunakan. Masalah
metode pengurutan data, maka perlu
algoritma dengan waktu eksekusi yang
dianalisis kompleksitasnya baik
lebih cepat tergantung dengan
kompleksitas waktu maupun kompleksitas
kompleksitas algoritma, yaitu suatu
ruang yang menitikberatkan pada
analisis algoritma tentang ukuran waktu

110
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

banyaknya langkah yang diperlukan dalam nilai Big-O, maka semakin tidak efektif lah
mengurutkan data. algoritma tersebut digunakan. Pada
makalah ini, akan dilakukan analisis
Waktu dan ruang yang dibutuhkan oleh
besarnya kompleksitas waktu algoritma
algoritma bergantung pada jenis komputer
(T(n)) dan kompleksitas waktu asimptotik
dan compiler bahasa pemrograman. Selain
(O) terhadap beberapa algoritma
bergantung pada komputer, ukuran waktu
pengurutan yang popular. Permasalahan
dan ruang yang dibutuhkan oleh suatu
pengurutan (sorting problem) secara
program juga ditentukan oleh compiler
formal didefinisikan sebagai berikut:
bahasa pemrograman yang digunakan.
Compiler yang berbeda belum tentu - Input: suatu urutan n bilangan.
menerjemahkan program ke dalam kode - Output: suatu permutasi atau
mesin (object code) yang sama. Sebagai penyusunan kembali dari input
implikasinya, kode mesin yang berbeda sedemikian rupa sehingga pada tata
akan menggunakan waktu dan ruang urutan ascending (dari nilai kecil ke
memori yang berbeda pula [1]. Dengan besar) ata pada urutan descending (dari
demikian kebergantungan tersebut, maka nilai besar ke kecil).
secara teoritis model abstrak pengukuran Sebagai contoh jika diberikan masukan
waktu dan ruang harus bebas dari delapan bilangan acak maka keluarnya
pertimbangan mesin dan compiler apapun. adalah sebagai berikut ini:
Besaran yang dipakai untuk menerangkan Input:
model abstrak pengukuran waktu dan Out
ruang adalah kompleksitas algoritma. 3 4 8 7 6 2 1 5 n=8
put:
Kompleksitas algoritma diukur
1 2 3 4 5 6 7 8 Ascending
berdasarkan kinerjanya dengan
menghitung waktu eksekusi suatu 8 7 6 5 4 3 2 1 Descending
algoritma. Waktu eksekusi algoritma dapat
diklasifikasikan menjadi tiga kelompok Data yang diurutkan tidak harus atau tidak
besar, yaitu best-case (kasus terbaik), hanya seperti contoh diatas, namun bisa
average-case (kasus rerata) dan worst-case saja string dengan pengurutan awalan acak
(kasus terburuk) [3]. Pada pemrograman di depannya ataupun jumlah karakter pada
yang dimaksud dengan kasus terbaik, string tersebut. Dapat disimpulkan bahwa
kasus terjelek dan kasus rerata suatu dalam pengurutan harus terdapat:
algoritma adalah besar kecilnya atau - Data yang diurutkan dalam tipe yang
banyak sedikitnya sumber-sumber yang sama atau setidaknya memperoleh
digunakan oleh suatu algoritma. Makin perlakuan data yang sama.
sedikit makin baik; makin banyak makin - Aturan pengurutan yang jelas.
jelek. Biasanya sumber-sumber yang Struktur dari algoritma heap sort adalah
paling dipertimbangkan tak hanya waktu sebuah pohon biner sempurna yang
eksekusi tetapi bisa juga besar memori, memenuhi property heap. Node akar (root
catu-daya dan sumber-sumber lain. node) memiliki data terbesar atau terkecil
Kompleksitas waktu, T(n), adalah jumlah yang terdapat pada pohon algortima heap
operasi yang dilakukan untuk sort termasuk algoritma sorting yang sulit
melaksanakan algoritma sebagai fungsi dipahami karena banyak langkah-langkah
dari ukuran masukan n. [10]. Selain itu dalam mengurutkan data.
dianalisis pula besar dari kompleksitas
waktu asimptotik dari suatu algoritma yang
dinotasikan dengan Big-O. Semakin besar

111
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

2. METODE PENELITIAN Sebagaimana diketahui, ketika suatu Heap


dibangun maka kunci utamanya adalah:
a Ketiga algoritma tersebut
diimplementasikan untuk mengurutkan node atas selalu mengandung elemen lebih
sejumlah angka yang dilakukan oleh besar dari kedua node dibawahnya.
pengguna. Apabila elemen berikutnya ternyata lebih
b Kedua kode sumber untuk ketiga algoritma besar dari elemen root, maka harus di swap
tersebut diubah untuk dapat mengurutkan dan lakukan: proses heapify lagi. Root dari
angka yang dihasilkan secara acak dengan suatu heap sort mengandung elemen
jumlah angka sebanyak permintaan dari terbesar dari semua elemen dalam heap.
pengguna untuk mengetahui seberapa baik
performa dalam mengurutkan data. Proses heap sort dapat dijelaskan sebagai
c Ketiga algoritma tersebut mengurutkan berikut:
sejumlah angka acak dengan rentan jumlah a) Representasikan heap dengan n elemen
yang sudah ditentukan dan kemudian dalam sebuah array A[n].
hasilnya dibandingkan. b) Elemen root tempatkan pada A[1].
c) Elemen A[2i] adalah node kiri dibawah
3. HASIL DAN PEMBAHASAN A[i].
d) Elemen A[2i+1] adalah node kanan
A. Perangkat Pengujian
dibawah A[i].
Penelitian ini diimplementasikan pada
e) Ambil nilai root (terbesar) A[1..n-1]
satu buah komputer dengan spesifikasi
dan pertukarkan dengan elemen
Processor Intel(R) Core(TM) i3-2328M
terakhir dalam array, A[n]
CPU @ 2.20GHz dengan RAM 2048MB
f) Bentuk Heap dari (n-1) elemen, dari
yang bersistem operasi Windows 10 Pro
A[1] hingga A[n-1]
32-bit dengan perangkat lunak BlueJ 3.0.9
g) Ulangi langkah 5 dimana indeks
untuk penyusunan program komputer.
terakhir berkurang setiap langkah
B. Heap Sort
Dalam bentuk pseudocode, algoritma heap
Algoritma heap sort merupakan algoritma
sort dapat terlihat seperti ini:
pengurutan yang cukup cepat [2]. Prosedur
atau fungsi dasar yang digunakan adalah proceduresiftdown(input/output: H: heap)
sebagai berikut: var
- Prosedur Heapify yang running dalam parent,largerchild : node
O(log n) kali, merupakan kunci dalam begin
algoritma ini. parent = root dari H
- Prosedur BuildHeap, yang running largerchild = anak dari parent yang
dalam linear time, yang menghasilkan menampung elemen terbesar
heap dari input array yang tidak while elemen di parent lebih kecil dari
terurutkan elemen di largerchild do
- Prosedur heap sort, yang running tukar elemen di parent dengan
dalam O(n log n) kali, mengurutkan elemen di largerchild
array sesuai dengan posisinya. parent = largerchild
- Sebagai contoh,struktur data heap ini largerchild = anak dari parent yang
dapat dijelaskan atau ditampilkan menampung elemen terbesar
dalam bentuk pohon biner lengkap (a end
complete binary tree). end
Algoritma dan Pseudocode Kompleksitas Heap Sort
Binary heap digunakan sebagai struktur Dengan menganalisa makeheap, maka
data dalam algoritma Heap-Sort. didapat banyak pembandingan elemen

112
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

yang terjadi oleh makeheap paling banyak


2(n - 1). Selanjutnya dengan menganalisa
removekeys, maka banyaknya pembanding
elemen yang dilakukan oleh removekeys
paling banyak adalah
∑ ( )
(1)
Dengan mengkombinasikan analisis dari
makeheap dan removekeys, didapat
banyaknya pembandingan elemen di heap Gambar 1. Hasil Implementasi Heap Sort
sort ketika n merupakan eksponen dari 2
paling banyak adalah
C. Insertion Sort
2( n − 1) + 2n log n - 4n + 4 = 2( n log n - Cara kerja algoritma ini yaitu
n + 1) ≈ 2n log n pengurutandengan penyisipan bekerja
Sehingga untuk n merupakan eksponen dengan cara menyisipkan masing-masing
dari 2, nilai di tempat yang sesuai di antara
W(n) ≈ 2n log n ∈ (n log n) (2) elemen yang lebih kecil atau sama dengan
Sulit untuk menganalisa kompleksitas nilai tersebut. Untuk menghemat memori,
kasus rata-rata heap sort secara analitis. Implementasinya menggunakan
Namun, studi empiris telah menunjukkan pengurutan di tempat yang
bahwa kompleksitas untuk kasus membandingkan elemen saat itu dengan
rataratanya tidak lebih baik dari kasus elemen sebelumnya yang sudah diurut, lalu
terburuknya. Ini menunjukkan bahwa menukarnya terus sampai posisinya tepat.
kompleksitas untuk kasus rata-rata heap Hal ini terus dilakukan sampai tidak ada
sort adalah elemen tersisa di input. Contoh dari
algoritma ini dapat kita ambil dalam
A(n) ≈ 2n log n ∈ (n log n) (3) kehidupan sehari-hari, misalnya
mengurutkan kartu remi [6]. Anggaplah
Analisis Heap Sort bahwa terdapat sebuah meja yang berisi
Kompleksitas waktu pengurutan data setumpuk kartu. Meja ini melambangkan
algoritma heap sort tidak terpengaruh oleh kondisi larik sebelum diurutkan. Langkah-
bermacam bentuk dan kondisi data awal langkah pengurutan adalah sebagai berikut:
[4]. Banyaknya perbandingan yang harus a) Ambil kartu pertama dari meja,
dilakukan untuk siklus pertama adalah n, letakkan di tangan kiri.
perbandingan yang harus dilakukan untuk b) Ambil kartu kedua dari meja,
siklus yang kedua n-1, dan seterusnya. bandingkan dengan kartu yang berada
Sehingga jumlah keseluruhan di tangan kiri,kemudian letakkan pada
perbandingan adalah 2(n-1) perbandingan. urutan yang sesuai setelah
Menggunakan algoritma pengurutan perbandingan.
seleksi, hindari pengurutan nilai dengan c) Ulangi proses hingga seluruh kartu
data pada tabel lebih besar dari 1000 buah, pada meja telah diletakkan berurutan
dan hindari mengurutkan tabel lebih dari pada tangan kiri.
beberapa ratus kali [9]. Berikut Dengan Kartu-kartu pada tangan kiri tersebut
interval data antara 1 sampai dengan 10 menunjukkan kondisi larik sesudah
elemen. Waktu eksekusi diukur dengan diurutkan.
satuan Second (s).

113
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

Algoritma dan Pseudocode


Pseudocode untuk algoritma insertion sort
adalah sebagai berikut: 50 40 30 20 10 1x iterasi
(Input/Output T: TabInt, Input N: integer)
{mengurut tabel integer [1 .. N] dengan 40 50 30 20 10 2x iterasi

10x iterasi
Insertion Sort secara ascending}
Kamus:
i: integer 30 40 50 20 10 3x iterasi
Pass: integer
Temp: integer
Algoritma: 20 30 40 50 10 4x iterasi
Pass traversal [2..N]
Temp ←TPass Gambar 3. Kondisi Worst Case Pada
i ← pass - 1 Insertion Sort
while (j ≥ 1) and (Ti > Temp) do Ti+1
Untuk setiap iterasi i pada kalang for
←Ti i ← i-1
tertular selalu ada perbandingan i, sehingga
depend on (T, i, Temp)
jumlah total perbandingan untuk seluruh
Temp ≥ Ti : Ti+1 ← Temp
iterasi pada kalang ini adalah:
Temp < Ti : Ti+1 ← Ti
Ti ← Temp ∑ ( )
( )

{T[1..Pass-1] terurut} ( ) (4)

Kompleksitas Algoritma Insertion Sort


Analisis Insertion Sort
Kondisi terbaik tercapai jika data telah
Untuk kasus terbaik algoritma ini berjalan
terurut, hanya satu perbadingan dilakukan
1 kali, yaitu jika elemen dalam tabel telah
untuk setiap posisi i, sehingga terdapat n-1
terurut. Kalang (loop) while tidak pernah
perbandingan, atau O(n).
dijalankan. Untuk kasus terburuk algoritma
ini berjalan Nmax kali. Sehingga, seperti
10 20 30 40 50 4x iterasi pengurutan gelembung, pengurutan dengan
penyisipan mempunyai kompleksitas
Gambar 2. Kondisi Best Case Pada Insertion algoritma O(n2 ). Algoritma insertion sort
Sort secara teknis lebih mudah diterapkan
dibandingkan dengan merge sort, berkaitan
Kondisi terburuk (worst case) tercapai jika dengan panjangnya intruksi yang
data telah urut namun dengan urutan yang diperlukan [5]. Namun, algoritma ini tetap
terbalik. Pada kasus ini, untuk setiap i, kurang efisien untuk tabel berukuran besar
elemen data(i) lebih kecil dari elemen (menyimpan banyak nilai). Dengan
data(0), ... data(i-1), masing-masing dari interval data antara 1 sampai dengan 10
elemen dipindahkan satu posisi. elemen. Waktu eksekusi diukur dengan
satuan Second (s).

114
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

a) Array kecil akan mengambil langkah-


langkah untuk menyortir lebih sedikit
dari array besar.
b) Lebih sedikit langkah yang diperlukan
untuk membangun sebuah array terurut
dari dua buah array terurut daripada
dari dua buah array tak terurut.
merge (arrayl, pertama, terakhir)
tengah = (pertama + terakhir)/2;
Gambar 4. Hasil Implementasi Insertion il = 0;
Sort i2 = pertama;
i3 = tengah + 1;
D. Algoritma Merge Sort
while kedua sub larik dari
Secara konseptual, untuk sebuah array
array1 memiliki elemen
berukuran n, merge sort bekerja sebagai
if arrayl[i2] < arrayl[i3]
berikut:
temp[il++] = arrayl[i2++];
a) Jika bernilai 0 atau 1, maka array sudah
else
terurut.
temp[il++] = arrayl[i3++];
Sebaliknya:
masukkan ke dalam temp sisa
b) Bagi array yang tidak terurut menjadi
elemen dari arrayl;
dua sub-array, masing-masing
masukkan ke arrayl isi dari temp;
berukuran n/2.
c) Urutkan setiap sub-array. Jika sub- Kompleksitas Algoritma Merge Sort
array tidak cukup kecil, lakukan Kompleksitas algoritma untuk larik dengan
rekursif langkah 2 terhadap sub-array. n elemen dan jumlah pergeseran (T)
d) Menggabungkan dua sub-array kembali dihitung melalui relasi rekursif berikut ini:
menjadi satu array yang terurut. T(1) = 0
Sebagai contoh jika terdapat data berupa
38, 27, 43, 3, 9, 82 dan 10 maka ilustrasi T(n) = 2T ( )+ 2n
pengurutannya adalah sebagai berikut:
Adapun M(n) dihitung lewat cara berikut:

(a) T(n) = 2( ( ) ( )) 2n =

4T( )+4n

= 4( ( ) ( )) + 4n = 8T( )+6n

= 2iT( )+2in

Memilih I = log n sedemikian sehingga n=


2i, maka diperoleh:
i
(b) T(n) = 2 T( )+2in = nT(1)+2n. log n
Gambar 5. Konsep Sorting Merge Sort
= 2n .log n = Ο(n log n)
Algoritma dan Pseudocode
Merge sort menggabungkan dua ide utama Kasus terburuk (worst case) terjadi bila
untuk meningkatkan runtime-nya: selama pemanggilan fungsi setiap rekursif

115
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

merge, nilai terbesar dari setiap elemen ( )


terletak di larik yang berbeda. Hal ini Dengan kata lain, diperoleh juga
memaksa fungsi merge untuk melakukan kompleksitas yang sama, O (n log n) [6].
pengurutan secara berpindah-pindah antar
larik, seperti yang digambarkan berikut: Analisis Merge Sort
Algoritma merge sort melalukan pass atau
traversal berkali-kali, dan setiap kali pass
mengurutkan sejumlah nilai yang sama
dengan ukuran set menggunakan insertion
sort. Ukuran dari set yang harus diurutkan
semakin membesar setiap kali melakukan
pass pada tabel, sampai set tersebut
mencakup seluruh elemen tabel. Ketika
ukuran dari set semakin membesar,
sejumlah nilai yang harus diurutkan
semakin mengecil. Ukuran dari set yang
Gambar 6. Kondisi Worst Case Pada Merge digunakan untuk setiap kali iterasi
Sort (iteration) mempunyai efek besar terhadap
efisiensi 2) pengurutan. Algoritma merge
Maka kompleksitas pada kondisi worst sort adalah algoritma yang relatif
case adalah O (n log n). sederhana. Hal ini menjadikan algoritma
Kasus terbaik (best case) untuk metode ini merge sort adalah pilihan yang baik dan
dijumpai pada kondisi dimana elemen efisien untuk mengurutkan nilai dalam
memiliki nilai terbesar yang lebih kecil suatu tabel berukuran sedang. Dengan
dibandingkan dengan seluruh nilai pada interval data antara 1 sampai dengan 10
elemen yang lain [6], sebagaimana berikut elemen. Waktu eksekusi diukur dengan
ini: atuan Second (s).

Gambar 7. Kondisi Best Case Pada Merge


Sort Gambar 8. Hasil Implementasi Merge Sort

Pada skenario ini hanya n/2 perbandingan


dari elemen yang diperlukan. 4. SIMPULAN
Menggunakan proses perhitungan yang Berdasarkan analisis yang dilakukan untuk
sama sebagaimana dalam kasus terburuk, menemukan besarnya kompleksitas waktu
diperoleh [6]: algoritma dan kompleksitas waktu
asimptotik tiap algoritma yang telah
(a) ( ) ( ) dilakukan sebelumnya, dapat dibentuk
( ) ( ) sebuah tabel untuk menampilkan nilai

116
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

kompleksitas waktu asimptotik untuk [2] Ardi, A. Wijaya, dan F. N. Noris,


setiap algoritma. Aplikasi Simulasi Pengurutan Data
Tabel 1. Nilai Kompleksitas Algoritma Menggunakan Algoritma Heap Sort.
Bengkulu: Universitas
Kompleksitas (O)
Muhammadiyah Bengkulu, 2015.
Algoritma Average
Best Case
Case
Worst Case [3] O. Goldreich, “Computational
Heap Sort O( ) O( ) O( )
Complexity: A Conceptual
Insertion Perspective”. New York: Cambridge
O( ) O( ) O( ) University Press, 2008.
Sort
Merge Sort O( ) O( ) O( ) [4] S. Irianto, dan H. Mustafidah, Analisis
Kompleksitas Waktu dan Ruang
Metode pengurutan algoritma heap sort Terhadap Laju Pertumbuhan
metode pengurutan data yang tergolong Algoritma Heap Sort. Purwokerto:
mempunyai kecepatan tinggi, dimana Universitas Muhammadiyah
kompleksitas dan kecepatan waktu Purwokerto, 2006.
pengurutan data yang dibutuhkan untuk [5] A. H. Saptadi, dan D. W. Sari,
proses pengurutan memiliki proses O (n Analisis Algoritma Insertion Sort,
log n). Merge Sort dan Implementasinya
Hasil pengamatan berdasarkan tabel data Dalam Bahasa Pemrograman C++.
dan kecepatan proses pengurutan, serta Palembang: Universitas Sriwijaya
grafik pertumbuhan waktu proses Palembang, 2012.
pengurutan data terhadap jumlah data. [6] R. Hibbler, “Merge Sort”, Dept. Of
Pengurutan data dengan algoritma heap Computer Science. Florida Institute of
sort memberikan waktu proses yang Technology. Florida, USA. 2008.
konsisten naik dalam peningkatan lama [7] Saputra, dkk. 2010. Analisis Algoritma
waktu proses terhadap jumlah data. Rekursif Quick Sort
(http://www.mediafire.com/download/
Dengan demikian algoritma heap sort
py3q5jevwp59vj/DAA+2010+IF32_0
dalam proses pengurutan data termasuk
1+Analisis+Algoritma+Rekursif+Quic
algoritma yang relatif cepat dibanding
k+Sort.pdf, diakses 31 Januari 2017)
dengan insertion sort dan merge sort,
[8] V. Sharma, S. Singh, K. S. Kahlon,
proses pengurutan data dengan algoritma
2008. “Performance Study of
heap sort tidak terpengaruh kondisi atau
Improved Heap Sort Algorithm and
urutan data (bukan jumlah data, sedangkan
Other Sorting Algorithms
jumlah data mempengaruhi lamanya waktu
on Different Platforms”. India:
proses pengurutan, dimana pertumbuhan
Department of Computer science &
waktu proses sesuai dengan penambahan
Engineering Chitkara Institute of
jumlah data), waktu proses pengurutan
Engg. & Technology.
konsisten naik sesuai dengan pertambahan
[9] Suarga. “Algoritma Pemrograman”.
jumlah data.
Yogyakarta: Andi, 2012.
[10] Tjaru, dan B. N. Setia, 2010.
DAFTAR PUSTAKA
“Kompleksitas Algoritma
[1] C. A. Akhyati, A. Johar, B. Susilo, Pengurutan Selection Sort dan
Perangkat Lunak Pendukung Insertion Sort”. Makalah
Pembelajaran Algoritma Heap Sort. IF2091 Strategi Algoritmik Tahun
Bengkulu: Universitas Bengkulu, 2009
2014. (http://informatika.stei.itb.ac.id/~rinal
di.muir/Matdis/20092010/Makalah091

117
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837

0/MakalahStrukdis0910074.pdf,
diakses 31 Januari 2017)
[11] Yahya, dan Y. Sofyansyah, 2014.
“Analisa Perbandingan Algoritma
Bubble Sort dan Selection Sort
Dengan Metode Perbandingan
Eksponensial”. Jurnal Pelita
Informatika Budi Darma, Volume 6,
Nomor 3. (http://pelita-
informatika.com/berkas/jurnal/28.%20
Sofyansayah.pdf, diakses 31 Januari
2017)

118

Anda mungkin juga menyukai