• Tidak ada hasil yang ditemukan

Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id

N/A
N/A
Protected

Academic year: 2021

Membagikan "Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id"

Copied!
7
0
0

Teks penuh

(1)

ISSN : 2338 – 8161     7  Analisa Perbandingan Algoritma Insertion Sort Dan Merge Sort Dalam PENGURUTAN DATA

Pada C++ Dan Java Ardiyansyah

Komputerisasi Akuntansi, AMIK BSI Pontianak ardiyansyah.arq@bsi.ac.id

Abstract - Ordering data interpreted as a rearrangement or sort the data that was originally inserted at random and then into data sequences. The purpose of sorting the data itself, namely to simplify the search data. Data sorting method is also needed by programmers in designing applications or programs due to facilitate the processing of data, particularly data on a large scale. Comparison of the data sorting method, the algorithm used is algorithm Insertion Sort and Merge Sort. As for implementation using the programming language C ++ and Java. Then the source code of the two algorithms are implemented in each programming language will be changed so that the data entered by the user's request will generate random data. After that, the two algorithms are compared and tested in the sequencing data. And the results obtained from testing and comparison made is that in C ++ algorithm Merge Sort is faster and showed better performance than the Insertion Sort algorithm. Whereas in Java Insertion Sort algorithm is faster and better than Merge Sort algorithm. Especially for the amount of data being entered > 10000. The Insertion Sort algorithm is superior in memory usage or storage space than Merge Sort algorithm for Insertion Sort algorithm does not use recursion in the sort routine.

Keywords: Data Ordering Methods, Algorithms Insertion Sort , Merge Sort algorithm.

Abstrak - Data Pengurutan diartikan sebagai penataan ulang atau mengurutkan data yang awalnya disisipkan pada urutan data acak dan kemudian ke. Tujuan dari pemilahan data itu sendiri, yaitu untuk mempermudah pencarian data. metode pengurutan data juga dibutuhkan oleh programmer dalam merancang aplikasi atau program karena memudahkan pengolahan data, terutama data dalam skala besar. Perbandingan data metode pengurutan, algoritma yang digunakan adalah Algoritma Insertion Sort dan Merge Sort. Adapun implementasi menggunakan bahasa pemrograman C ++ dan Java. Kemudian kode sumber dari dua algoritma diimplementasikan dalam setiap bahasa pemrograman akan diubah sehingga data yang dimasukkan oleh permintaan pengguna akan menghasilkan data acak. Setelah itu, kedua algoritma dibandingkan dan diuji dalam data sequencing. Dan hasil yang diperoleh dari pengujian dan perbandingan yang dibuat adalah bahwa dalam algoritma C ++ Merge Sort yaitu lebih cepat dan menunjukkan kinerja yang lebih baik daripada Algoritma Insertion Sort. Sedangkan pada Algoritma Java Insertion Sort lebih cepat dan lebih baik dari Algoritma Merge Sort. Terutama untuk jumlah data yang dimasukkan > 10000. Penyisipan ini unggul dalam penggunaan memori atau ruang penyimpanan dari Algoritma Merge Sort untuk algoritma Insertion Sort tidak menggunakan rekursi dalam rutinitas semacam.

Kata Kunci: Data Ordering Methods, Algoritma Insertion Sort, Algoritma Merge Sort. A. PENDAHULUAN

Sorting atau pengurutan Data diartikan sebagai penyusunan kembali atau mengurutkan data yang diinput secara acak, kemudian berakhir dengan data yang sudah terurut dengan teratur sebagai output. Penerapan dalam pengurutan data sering juga ditemui dalam kehidupan sehari-hari, sebagai contoh penerapannya adalah absensi siswa yang diurutkan berdasarkan abjad nama siswa atau nis siswa.

Pengurutan data dilakukan dengan tujuan mempermudah dalam pencarian data dan mempercepat dalam mengetahui data terbesar dan data terkecil. Misalkan dalam penyeleksian nilai siswa untuk memperoleh mana siswa yang mendapatkan nilai tertinggi dan nilai terendah. Dalam penyeleksian tersebut dilakukanlah pengurutan data berdasarkan nilai siswa yang paling tinggi hingga nilai siswa yang paling rendah.

Pengurutan data juga dibutuhkan dalam pemrograman karena dalam melakukan perancangan aplikasi atau program biasanya diperlukan sebuah pengurutan data untuk memudahkan dalam pemrosesan data tersebut. Banyak algoritma sorting yang sering digunakan dan diperlukan dalam pembuatan aplikasi atau program. Oleh karena itu, pemahaman terhadap beberapa algoritma sorting perlu diketahui dan diimplementasikan ke dalam program.

Ada banyak metode sorting yang dapat digunakan yaitu: bubble sort, bi-directional bubble sort, selection sort, shaker sort, insertion sort,Merge Sort, in-place Merge Sort, shell sort, heap sort, quick sort, swap sort dan lain sebagainya.

Pada penenelitian ini, akan membahas dua metode pengurutan, yaitu Insertion Sort

dan Merge Sort. Kedua metode tersebut akan

(2)

ISSN : 2338 – 8161     8  bahasa pemrograman yaitu C++ dan Java.

Perbandingan tersebut dilakukan untuk mengetahui mana diantara kedua metode tersebut yang paling cepat dalam pengurutan data dan mudah untuk diterapkan. Kemudian dari kedua metode tersebut akan dilihat ruang atau memori mana yang lebih efektif untuk digunakan.

B. TINJAUAN PUSTAKA 1. Algoritma

Menurut Sjukani (2009:1) Algoritma pada dasarnya adalah alur pikiran dalam menyelesaikan suatu pekerjaan, yang dituangkan dalam bentuk tertulis yang dapat dimengerti oleh orang lain. Sedangkan menurut Suarga (2012:1) algoritma merupakan susunan langkah yang pasti, yang bila diikuti maka akan mentransformasi data input dan output berupa informasi.

Dari menurut para ahli bahwa algoritma adalah susunan langkah yang pasti dari alur pikiran yang dituangkan dalam bentuk tertulis sehingga menjadi sebuah informasi yang dimengerti oleh orang lain.

Menurut Donald Kunth dalam buku Suarga (2012:4) Sebuah algorima juga harus memenuhi kriteria sebagai berikut:

1. Input

Suatu algoritma memiliki input atau kondisi awal sebelum dilaksanakan, bisa berupa nilai-nilai peubah yang diambil dari himpunan kusus.

2. Output

Suatu algoritma akan mengahsilkan output setelah dilaksanakan atau algoritma akan mengubah kondisi awal menjadi kondisi akhir, dimana nilai output diperoleh dari nilai input yang telah diproses melalui algoritma.

3. Definiteness

Langkah-langkah yang dituliskan dalam algoritma terdefinisi dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma.

4. Finiteness

Suatu Algoritma harus memberi kondisi akhir setelah jumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi awal atau input yang diberikan.

5. Effectiveness

Setiap langkah dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya didapatkan suatu yang diharapkan.

6. Generality

Setiap langkah alhoritma berlaku untuk setiap himpunan input yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan tertentu.

a. Insertion Sort

Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Insertion Sort disebut-sebut sebagai metode pertengahan. Artinya, metode ini memiliki kecepatan ratarata antara metode primitif (bubble dan selection) dan modern (merge dan quick) (Saptadi dan Sari, 2012:2).

Proses yang terjadi pada pengurutan dengan menggunakan metode Insertion Sort dimulai dari data ke-2, kemudian disisipkan tempat yang sesuai. Data pada posisi pertama diandaikan memang suda pada tempatnya (Utami dan Sukirisno, 2005:239).

Metode insertion sort adalah metode pengurutan data yang paling sederhana yaitu dengan menyisipkan data sesuai dengan posisi yang tepat dan pengurutan dimulai dari data ke-2.

i. Algoritma dan Pseudocode

Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma Insertion

Sort bekerja dalam pengurutan kartu (Saptadi

dan Sari, 2012:2).

Gambar 1. Analogi Metode Insertion Sort Anggaplah bahwa terdapat sebuah meja yang berisi setumpuk kartu. Meja ini melambangkan kondisi larik sebelum diurutkan. Langkah-langkah pengurutan adalah sebagai berikut:

a. Ambil kartu pertama dari meja, letakan di tangan kiri.

b. Ambil kartu kedua dari meja, bandingkan dengan kartu yang berada di tangan kiri, kemudian pada urutan yang sesuai setelah urutan.

c. Ulangi proses hingga seluruh kartu pada meja telah diletakkan berurutan pada tangan kiri.

(3)

ISSN : 2338 – 8161     9  Kartu-kartu pada tangan kiri tersebut

menunjukan kondisi larik sesudah diurutkan.

Pseudocode untuk algoritma Insertion Sort

adalah sebagai berikut (Saptadi dan Sari, 2012:3):

insertionsort(data[],n) for(i = 1; i < n; i++)

pindahkan seluruh elemen data[j] yang lebih besar daripada data[i] sebanyak satu posisi; geser data[ i ] pada posisi yang tepat; ii. Kompleksitas Algoritma

Kondisi terbaik (best case) tercapai jika data telah terurut. Hanya satu perbandingan dilakukan untuk setiap posisi i, sehingga terdapat n – 1 perbandingan atau O(n) (Saptadi dan Sari, 2012:3).

Gambar 2. Kondisi Best Case pada Insertion Sort

Kondisi terburuk (worst case) tercapai jika data telah urut namun dengan urutan yang terbalik. Pada kasus ini, untuk setiap i, elemendata[i] lebih kecil dari elemen data[0], …,data[i-1], masing-masing dari elemen dipindahkan satu posisi (Saptadi dan Sari, 2012:3).

Gambar 3. Kondisi Worst Case pada Insertion Sort

Untuk setiap iterasi i pada kalang for terluar, selalu ada perbandingan i, sehingga jumlah total perbandingan untuk seluruh iterasi pada kalang ini adalah (Saptadi dan Sari, 2012:3):

b. Merge Sort

Menurut Utami dan Sukrisno (2005:252)

Metode Merge Sort adalah menggabungkan

dua buah array yang sudah terurut.

Menurut Saptadi dan Sari (2012:3) Merge Sort adalah metode pengurutan yang menggunakan pola divide and concuer.

Langkah kerja dari Merge Sort (Saptadi dan Sari, 2012:3):

1. Divide

Memilah elemen – elemen dari rangkaian data menjadi dua bagian dan mengulangi pemilahan hingga satu elemen terdiri maksimal dua nilai.

2. Conquer

Mengurutkan masing-masing elemen. 3. Kombinasi

Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan. Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.

Dari pengertian dan langkah kerja dari merge sort diatas dapat disimpulkan bahwa merge sort adalah metode pengurutan dengan memisahkan elemen-elemen dari rangkaian data menjadi dua bagian, mengurutkan setiap elemen yang sudah dibagi menjadi dua bagian dan menggabungkan kembali dua buah array yang sudah terurut menjadi rangkaian data yang berurutan.

i. Algoritma dan Pseudocode

Algoritma Merge Sort sebenarnya

sederhana (Saptadi dan Sari, 2012:4): bagi larik menjadi dua sama besar, urutkan bagian pertama, urutkan bagian kedua,lalu gabungkan. Sebagai contoh, jika terdapat data berupa 38, 27, 43, 3, 9,82, dan 10 maka ilustrasi pengurutannya adalah sebagai berikut:

Gambar 4. Ilustrasi Merge Sort

Pseudocode untuk Merge Sort (Saptadi dan

Sari,2012:4) adalah sebagai berikut: mergesort(data)

(4)

ISSN : 2338 – 8161     10  mergesort (separuh kiri dari

data);

mergesort (separuh kanan dari data;

merge (kedua bagian ke dalam suatu urutan); Sedangkan pseudocode untuk merge itu sendiri adalah:

merge (arrayl, pertama, terakhir) tengah = (pertama + terakhir) / 2;

il=0; i2=pertama; i3=tengah+1;

while kedua sub larik dari array1 memiliki elemen

if arrayl[i2] < arrayl[i3]

temp[il++] = arrayl[i2++]; else

temp[il++]=arrayl[i3++];

masukkan ke dalam temp sisa elemen dari arrayl;

masukkan ke arrayl isi dari temp; ii. Kompleksitas Algoritma

Kompleksitas algoritma untuk larik dengan n elemen dan jumlah pergeseran (T) dihitung melalui relasi rekursif berikut ini (Saptadi dan Sari, 2012:4):

Adapun M(n) dihitung lewat cara berikut (Saptadi dan Sari, 2012:4):

Memilih i=log n sedemikian sehingga n=2i, maka diperoleh (Saptadi dan Sari, 2012:4):

Kasus terburuk (worst case) terjadi bila selama pemanggilan fungsi rekursif merge, nilai terbesar dari setiap elemen terletak di larik yang berbeda (Saptadi dan Sari, 2012:4). Hal ini memaksa fungsi merge untuk melakukan pengurutan secara berpindah-pindah antar larik, sebagaimana digambarkan berikut

:

Gambar 5. Kondisi Worst Case Pada Merge Sort

Pada kondisi ini (Saptadi dan Sari, 2012:4):

Kedua persamaan tersebut untuk selanjutnya diperluas seperti berikut (Saptadi dan Sari, 2012:4):

Dengan mengenali pola yang ada, maka dapat dituliskan persamaan:

Dengan 2i=n dan I=n log n dan memasukan nilai awal persamaan:

Maka kompleksitas pada kondisi worst case adalah O(n log n) (Saptadi dan Sari, 2012:4).

Kasus terbaik (best case) untuk metode ini dijumpai pada kondisi dimana elemen memiliki elemen memiliki nilai terbesar yang lebih dibandingkan dengan seluruh nilai pada elemen yang lain (Saptadi dan Sari, 2012:4), sebagai berikut ini:

(5)

ISSN : 2338 – 8161     11  Gambar 6. Kondisi Best Case pada Merge Sort

Pada sekenario ini hanya n/2 perbandingan dari elemen yang diperlukan. Menggunakan peroses perhitungan yang sama sebagaimana dalam kasus terburuk diperoleh (Saptadi dan Sari, 2012:4):

Dengan kata lain diperoleh juga kompleksitas yang sama, O(n log n) (Saptadi dan Sari, 2012:4).

2. PEMBAHASAN a. Pengujian

Pengujian ini dilakukan untuk mengetahui dan membandingkan kecepatan eksekusi program dari algoritma Insertion Sort dan Merge Sort terhadap data yang dimasukan dengan jumlah tertentu, baik pada bahasa pemrograman C++ maupun pada Java. Pengujian ini meliputi beberapa prosedur, antara lain:

1. Perangkat yang digunakan

Perangkat yang digunakan pada pengujian ini adalah Borland C++ 5.02 dan NetBeans DE 7.3 platform Windows 7 Professional dan komputer notebook dengan Spesifikasi:

a. Intel Pentium R Processor P62000 2.13GHz (2CPUs)

b. Intel R HD Graphics

c. 1,00 GB RAM

2. Mengubah Kode Sumber

Pengubahan kode sumber pada setiap algoritma berfungsi untuk menampilkan waktu eksekusi program, baik pada C++ maupun Java.

a. Bahasa Pemrograman C++

Fungsi yang digunakan untuk menampilkan waktu eksekusi program pada C++ sebagai berikut:

double awal=GetTickCount(); {fungsi yang diuji}

Double akhir= GetTickCount();

Kemudian tambahkan fungsi untuk mengisikan data secara acak:

Serta menambahkan 2 file header yaitu:

#include <time.h> #include <windows.h>

Waktu eksekusi dapat diketahui dengan menggunakan selisih antara variabel awal dan akhir, seperti berikut: cout<<endl<<endl;

cout<<"Waktu Eksekusi : "<<(akhir-awal)<<" "<<"MS";

b. Bahasa Pemrograman Java

Fungsi yang digunakan untuk menampilkan waktu eksekusi program pada Java sebagai berikut:

long awal = System.currentTimeMillis(); {fungsi yang diuji}

long akhir = System.currentTimeMillis();

Kemudian tambahkan fungsi untuk mengisikan data secara acak:

for(int i=0; i<N; i++) {

data[i] = (int)(Math.random()* N); }

Waktu eksekusi dapat diketahui dengan menggunakan selisih antara variabel awal dan akhir, seperti berikut:

System.out.print("Waktu Eksekusi = "+(akhir-awal)+" Ms");

Dengan mengubah kode sumber didalam script kodingnya baik pada C++ maupun pada Java, difungsikan untuk menampilkan kondisi larik baik saat data belum terurut maupun data yang sudah terurut.

3. Eksekusi Program

Dalam pengujian ini dilakukan eksekusi program pada kedua metode tersebut baik di C++ maupun Java. Jumlah data yang di input mulai dari 10000 hingga 100000 dengan kenaikan 10000 disetiap eksekusi dilakukan.

Hasil eksekusi program pengujian algoritma Insertion Sort pada C++:

(6)

ISSN : 2338 – 8161     12  Gambar 11. Hasil Pengujian Insertion Sort

Pada C++

Hasil eksekusi program pengujian algoritma Merge Sort pada C++:

Gambar 12. Hasil Pengujian Merge Sort Pada C++

Hasil eksekusi program pengujian algoritma Insertion Sort pada Java:

Gambar 13. Hasil Pengujian Insertion Sort Pada Java

Hasil eksekusi program pengujian algoritma Merge Sort pada Java:

Gambar 14. Hasil Pengujian Merge Sort Pada Java

b. Hasil Akhir

Hasil akhir yang diperoleh dari pengujian dari kedua metode pada tiap bahasa pemrograman akan dicatat ke dalam tabel, kemudian digambarkan ke dalam bentuk diagram batang dan grafik, sebagai berikut: 1. Tabel Pencatatan Hasil Eksekusi Pada C++

Tabel 1. Hasil Waktu Eksekusi Pada C++ Jumlah Data Waktu Eksekusi (MS)

Insertion Sort Merge Sort

10000 63 15 20000 156 31 30000 343 47 40000 578 62 50000 905 62 60000 1280 78 70000 1747 78 80000 2277 94 90000 2886 109 100000 3557 125

2. Tabel Pencatatan Hasil Eksekusi Pada Java

Tabel 2. Hasil Waktu Eksekusi Pada Java Jumlah

Data

Waktu Eksekusi (MS) Insertion

Sort Merge Sort

10000 78 3837 20000 265 5148 30000 577 8721 40000 967 10640 50000 1529 13275 60000 2168 15850 70000 2933 22277 80000 3838 26832 90000 4836 29749 100000 5944 45646

(7)

ISSN : 2338 – 8161     13  3. Hasil Waktu Eksekusi Pada C++ Yang di

Gambarkan Dalam Bentuk Grafik

Gambar 15. Hasil Akhir Pengujian Insertion Sort dan Merge Sort Pada C++

4. Hasil Waktu Eksekusi Pada Java Yang di

Gambarkan Dalam Bentuk Grafik

Gambar 16. Hasil Akhir Pengujian Insertion Sort dan Merge Sort Pada C++ 4. KESIMPULAN

Dari hasil implementasi, pengujian dan hasil akhir dari perbandingan yang telah dilakukan dapat di simpulkan sebagaimana berikut ini:

1. Dari hasil implementasi dari kedua

bahasa pemrograman baik C++ maupun Java, algoritma Insertion Sort lebih mudah untuk diterapkan dibandingkan

algoritma Merge Sort karena perintah

yang digunakan tidak panjang seperti perintah Merge Sort.

2. Dari hasil pengujian pada C++ diketahui

bahwa algoritma Merge Sort lebih cepat dibandingakan dengan algoritma insertion sort, terutama untuk jumlah data yang dimasukan diatas dari 10000.

3. Sedangkan hasil pengujian pada Java

diketahui bahwa algoritma Insertion Sort lebih cepat dibandingkan algoritma Merge Sort, terutama untuk jumlah data > 10000.

4. Untuk ruang atau memori yang dibutuhkan, algoritma Merge Sort membutuhkan memori atau ruang yang lebih besar dikarenakan algoritma ini memakai dua elemen terpisah dan dilakukan secrara rekursif.

DAFTAR PUSTAKA

[1] Saptadi Arief Hendra, Desi Windi Sari. 2012. Analisis Algoritma Insertion Sort, Merge Sort dan Implementasinya Dalam Bahasa Pemrograman C++. Vol. 4 No 2. 2012.

[2] Sjukani Moh. 2009. Algoritma

(Algoritma dan Struktur Data 1) Dengan C, C++, dan Java, Edisi 5 Teknik-teknik Dasar Pemrograman Komputer. Jakarta: Mitra Wacana Media.

[3] Suaraga. 2012. Algoritma dan

Pemrograman. Yogyakarta: Andi. [4] Utami, Sukrisno. 2005. 10 Langkah

Belajar Logika dan Algoritma, Menggunakan Bahasa C dan C++ di GNU/LINUX. Yogyakarta:Andi.

Gambar

Gambar 1. Analogi Metode Insertion Sort  Anggaplah bahwa terdapat sebuah meja  yang berisi setumpuk kartu
Gambar 5. Kondisi Worst Case Pada Merge  Sort
Gambar 14. Hasil Pengujian Merge Sort Pada  Java
Gambar 15. Hasil Akhir Pengujian  Insertion Sort dan Merge Sort Pada C++  4.  Hasil Waktu Eksekusi Pada Java Yang di

Referensi

Dokumen terkait

Nilai yang terkandung dalam surat al-maa’uun yakni nilai-nilai sosial pendidikan Islam meliputi; menyayangi anak yatim, memberi makan kepada fakir miskin, dan

menunjukan bahwa kualitas jaringan komputer LAN dan WLAN pada SOHO tersebut tergolong memuaskan, pengiriman data melalui file sharing dengan NAS lebih cepat

Uji validitas dengan menggunakan kasus hamburan elektron dengan energi datang 200 eV ke atas oleh atom-atom gas mulia menunjukkan bahwa model potensial Salvat selain lebih

Dari calon legislatif terpilih yang saya teliti menjadi anggota dewan pada periode 2014-2019 yaitu Diah Sunarsasi, dr.Suryaningsih, Riawan Woro (Partai Gerindra), Eny Triyuliastuti

Untuk melihat stress, displacement dan restrain load dapat digunakan Element Viewer dengan cara klik tom bol , maka akan muncul tabel seperti berikut di bagian bawah

Efek Pemberian Ekstrak Etanol Daun Talok (Muntingia calabura L.) terhadap Kadar Asam urat Serum Tikus Putih (Rattus norvegicus L.) Galur Wistar

Berdasarkan peran-peran tersebut Baitul Maal wat Tamwil (BMT) adalah jawaban untuk wilayah yang belum terjangkau oleh lembaga-lembaga keuangan perbankan, dan memiliki

Adapun pendelegasian pemberian kewenangan pemberian izin berdasarkan Peraturan Menteri Kesehatan Republik Indonesia Nomor 006 Tahun 2012 tentang industri dan usaha obat