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
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
112
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837
113
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837
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 ∑ ( )
( )
114
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837
(a) T(n) = 2( ( ) ( )) 2n =
4T( )+4n
= 4( ( ) ( )) + 4n = 8T( )+6n
= 2iT( )+2in
115
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837
116
STRING (Satuan Tulisan Riset dan Inovasi Teknologi) p-ISSN: 2527 - 9661
Vol. 5 No. 2 Desember 2020 e-ISSN: 2549 - 2837
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