PERBANDINGAN BUBBLE SORT, SHELL SORT DAN KOMBINASI BUBBLE SORT DENGAN SHELL SORT 1 1 Program Studi Teknik Komputer, Akademi Manajemen Informatika dan Komputer MDP nur.rachmat@mdp.ac.id Abstrak Data terurut diperlukan untuk pengolahan data. Penggunaan algoritma pengurutan yang tepat dapat mempercepat waktu pengurutan. Shell Sort dan Bubble Sort dapat dikombinasikan untuk mendapatkan algoritma dengan dengan waktu yang lebih baik. Kombinasi dilakukan dengan cara menggunakan dua algoritma secara bergantian. Shell Sort digunakan pada tahap awal kemudian dilanjutkan dengan dengan Bubble Sort. Algoritma pengurutan yang memiliki waktu yang lebih baik dapat dikelompokan berdasarkan jumlah elemen data. Bubble Sort lebih cepat dibandingkan Shell Sort untuk jumlah elemen acak sampai dengan 20. Sedangkan untuk elemen acak 30 sampai dengan 9000, Shell Sort lebih cepat dibandingkan Bubble Sort dan Shell-Bubble Sort untuk semua jumlah elemen acak. Kemudian algoritma Shell-Bubble Sort lebih cepat dibandingankan algoritma Bubble Sort pada jumlah elemen acak 500 sampai dengan 9000. Kata kunci Bubble Sort, Kombinasi, Shell Sort Abstract Ordered Data used to data processing. Using a best sorting algorithm can be reduce sorting time. Shell Sort and Bubble Sort can be combined to get algorithm with best time. Combination do by use two algorithm one by one. Shell Sort use at first then Bubble Sort. Sorting algorithm that has best time can be group based on amount of data. Bubble Sort faster than Shell Sort for 20 data. For 30 until 9000 Shell Sort faster than Bubble Sort and Shell-Bubble Sort. Next Shell-Bubble Sort faster than Bubble Sort in 500 until 9000 data. Keywords Bubble Sort, Combination, Shell Sort I. PNDAHULUAN Perkembangan teknologi ikut mempengaruhi perkembangan informasi. Dengan berkembangnya informasi mengakibatkan jenis data yang beragam pula. Informasi diperoleh dengan melakukan pengolahan data. Pada pengolahan data diperlukan tahapan yang sering disebut preprocessing salah satunya yaitu pengurutan data. Pengurutan data diperlukan untuk memudahkan pengolahan data. Algoritma yang digunakan untuk pengurutan data diantara lain yaitu Bubble Sort dan Shell Sort. Bubble Sort merupakan algoritma yang terinspirasi dari prinsip gelembung. Gelembung timbul kepermukaan air dikarenakan mengandung udara. Gelembung memiliki massa yang lebih kecil sehingga naik ke permukaan. Hal ini yang mendasari prinsip Bubble Sort. Elemen terkecil akan diletakkan di bagian teratas atau terbawah tergantung dari apakah diurutkan secara ascending atau descending. Shell Sort merupakan hasil dari generalisasi algoritma Insertion Sort. Shell Sort merupakan perbaikan dari Insertion Sort. Perbaikan yang dilakukan dengan mengizinkan perbandingan dan penukaran dilakukan pada bagian yang terjauh. Langkah terakhir dari Shell Sort adalah seperti Insertion Sort biasa. Algoritma pengurutan memiliki kelebihan dan kelemahan masing-masing. Tidak semua algoritma bisa digunakan untuk semua permasalahan pengurutan. Pada penelitian yang dilakukan [1] beberapa algoritma pengurutan dibandingkan berdasarkan jumlah data. Shell Sort merupakan algoritma yang dapat digunakan untuk mengurutkan data dalam jumlah besar. Pada penelitian yang dilakukan oleh [2] Bubble Sort dapat juga dipilih sebagai STMIK MUSIRAWAS Lubuklinggau 59
algoritma pengurutan yang memiliki polapola tertentu. Terdapat penelitian yang membahas bagaimana melakukan perbaikan algoritmaalgoritma pengurutan seperti yang dilakukan [3] dengan memperbaiki Bubble Sort, Shell Sort dan Selection Sort. Hasil yang didapat bahwa algorima hasil perbaikan memiliki kecepatan yang lebih baik. Pada penelitian yang dilakukan [4] salah satunya juga melakukan perbaikan terhadap Bubble Sort. Pada penelitian yang dilakukan [5] algoritma Quick Sort dan Merge Sort dikombinasikan dengan Insertion Sort. Hasil penelitian tersebut menunjukkan bahwa hasil kombinasi memiliki kecepatan yang lebih baik terhadap algoritma biasa. Di penelitian yang lain juga dilakukan [6] Merge Sort dan Quick Sort dikombinasikan dengan Insertion Sort, Merge Sort dan Selection Sort. Hasil penelitian menunjukkan bahwa hasil kombinasi juga mengungguli algoritma pengurutan biasa. Pada penelitian yang dilakukan, algoritma Shell Sort dan Bubble Sort akan dikombinasikan untuk menghasilkan algoritma yang bisa memiliki kecepatan yang lebih baik. Proses kombinasi dilakukan dengan melakukan penggantian bagian akhir dari Shell Sort dengan Bubble Sort. Pada langkah awal Shell Sort dipilih untuk mengurutkan data lalu dilanjutkan dengan Bubble Sort. II. TINJAUAN PUSTAKA Algoritma pengurutan melakukan sorting dari elemen terkecil ke terbesar atau sebaliknya. Algoritma sorting menghasilkan output daftar elemen yang terurut. Untuk mengurutkan elemen, dibutuhkan struktur data yang digunakan untuk menyimpan elemen-elemen tersebut. Berbagai struktur data yang biasanya digunakan algoritma pengurutan antara lain array, linked list, stack, dan lain-lain. Adapun algoritma pengurutan yang dibahas pada penelitian ini antara lain Bubble Sort, Shell Sort dan kombinasi antara Bubble Sort dengan Shell Sort. 2.1 Bubble Sort Bubble sort merupakan algoritma pengurutan yang paling umum. Bubble Sort dikenal tidak efisien dikarenakan setiap elemen dibandingkan mulai dari elemen awal sampai dengan akhir elemen secara berulang, sehingga Bubble Sort membutuhkan waktu yang lebih lama untuk mendapatkan hasil elemen yang terurut. Contoh algoritma Bubble Sort dapat dilihat pada Gambar 1. Jumlah elemen acak pada contoh algoritma Bubble Sort adalah 8 elemen. Gambar 1. Contoh Algoritma Bubble Sort 2.2 Shell Sort Shell Sort diusulkan oleh Donald L. Shell. Shell Sort hampir sama dengan Insertion Sort, yang membedakan antara Shell Sort dengan Insertion Sort adalah jumlah perbandingan elemen. Perbandingan elemen pada Shell Sort dibagi menjadi beberapa tahap. Tahapan yang diusulkan oleh Donald L. Shell antara lain sequence [N/2], [N/4], dan [N/8]. [7] 2.2.1 Tahapan N/2 Pada tahap ini, elemen yang dibandingkan adalah elemen pertama dengan elemen yang memiliki jarak (N/2). Dimana N adalah jumlah elemen yang ada. Proses pada tahap ini berlangsung sampai dengan elemen yang dibandingkan memiliki jarak sama dengan N. STMIK MUSIRAWAS Lubuklinggau 60
Gambar 2. Tahap N/2 Algoritma Shell Sort [7] 2.2.2 Tahapan N/4 Pada tahap ini, jarak elemen yang dibandingkan diperkecil menjadi (N/4) atau setengah dari jarak pada tahap 1. Sama seperti tahap 1, proses pada tahap 2 berlangsung sampai dengan elemen yang dibandingkan memiliki jarak sama dengan N. Gambar 4. Tahap N/8 Algoritma Shell Sort [7] III. METODOLOGI PENELITIAN Pada bagian ini dilakukan pembahasan mengenai kombinasi algoritma Shell Sort dengan Bubble sort. Pada kombinasi algoritma Shell Sort dengan Bubble Sort ini dilakukan 2 tahapan yaitu diawali dengan pengurutan menggunakan Shell Sort dan dilanjutkan pengurutan menggunakan Bubble Sort. Data yang digunakan dalam eksperimen ini diperoleh dari hasil pengacakan. Gambar 3. Tahap N/4 Algoritma Shell Sort [7] 2.2.3 Tahapan N/8 Pada tahap ini, jarak elemen yang dibandingkan diperkecil kembali menjadi setengah dari jarak pada tahap sebelumnya yaitu (N/8). 3.1 Tahap 1 Pengurutan Shell Sort Pada tahap ini pengurutan elemen acak menggunakan algoritma Shell Sort dengan jarak elemen yang dibandingkan adalah 3 elemen, lebih sedikit daripada algoritma Shell Sort yang diusulkan oleh Donald L. Shell yang membandingkan elemen dengan jarak N/2 elemen pada pengurutan tahap 1. Pengurangan jarak elemen yang dibandingkan ini dengan tujuan dapat mempercepat proses pengurutan elemen acak. Berikut adalah ilustrasi pengurutan elemen menggunakan algoritma Shell Sort dengan perbandingan memiliki jarak 3 elemen. STMIK MUSIRAWAS Lubuklinggau 61
Gambar 5. Tahap 1 Pengurutan Elemen dengan Jarak 3 Elemen Berikut ini adalah algoritma dari Shell Sort dengan jarak 3 elemen yang ditampilkan pada algoritma 1. public static void shellbubblesort(int[] A) //Shell Sort k=3 int n, c, d, swap; int incr = 3; while (incr > 0) for (int i = incr; i < A.length; i++) int j = i; int temp = A[i]; while (j >= incr && A[j - incr] > temp) A[j] = A[j - incr]; j = j - incr; A[j] = temp; if (incr == 2) incr = 1; else incr *= 2; // bubblesort(a) Algoritma 1. Algoritma Shell Sort k=3 3.2 Tahap 2 Pengurutan dengan Bubble Sort Pada tahap sebelumnya, elemen acak yang diurutkan menggunakan algoritma Shell Sort dengan jarak 3 elemen yang dibandingkan sudah hampir terurut. Kemudian pada tahap ini dilakukan pengurutan kembali menggunakan algoritma Bubble Sort untuk mendapatkan elemen yang terurut. Berikut adalah ilustrasi pengurutan elemen menggunakan algoritma Bubble Sort. Gambar 6. Tahap 2 Pengurutan dengan Bubble Sort Berikut ini adalah algoritma dari Bubble Sort yang ditampilkan pada algoritma 2. public static void bubblesort(int[] A) int n, c, d, swap; n = A.length; c = 0; for (c = 0; c < ( n - 1 ); c++) for (d = 0; d < n - c - 1; d++) if (A[d] > A[d+1]) swap = A[d]; A[d] = A[d+1]; A[d+1] = swap; Algoritma 2. Algoritma Bubble Sort Setelah dilakukan kombinasi algoritma Shell Sort dan Bubble Sort, untuk menghitung waktu pengurutan algoritma digunakan fungsi nanotime() yang tersedia di bahasa pemrograman Java. Adapun langkah untuk menghitung waktu pengurutan algoritma pada bahasa pemrograman Java adalah sebagai berikut: 1. Inisialisasi waktu mulai Sebelum pengurutan dimulai, set inisialisasi waktu mulai untuk mendapatkan waktu dimulainya proses algoritma dengan cara menambahkan kode berikut. long mulai = System.nanoTime(); 2. Lakukan pengurutan menggunakan algoritma Shell-Bubble Sort 3. Hitung waktu selesai pengurutan Setelah algoritma shell-bubble sort selesai diproses, catat waktu selesai STMIK MUSIRAWAS Lubuklinggau 62
dengan cara menambahkan kode berikut. long selesai = System.nanoTime() mulai; 4. Tampilkan waktu pengurutan Untuk menampilkan waktu pengurutan algoritma Shell-Bubble Sort menggunakan kode system.out.println(selesai); IV. HASIL DAN PEMBAHASAN Pada tahap ini dilakukan pengujian algoritma Bubble Sort, Shell Sort dan kombinasi dari Shell-Bubble Sort. Pengujian dilakukan pada notebook dengan prosessor Intel(R) Core(TM) i5-4210u CPU @ 1.70GHz (4 CPUs), memori 4096 MB RAM, sistem operasi Windows 8.1 Pro 64-bit dan menggunakan software NetBeans IDE 8.0.2. Adapun cara pengujian algoritma Bubble Sort, Shell Sort dan kombinasi dari Shell- Bubble Sort adalah dengan memberikan elemen acak yang berjumlah 10, 20, 30, 40, 50, 100, 500, 1000, 5000 dan 9000. Dari pengujian yang dilakukan didapat hasil sebagai berikut: Tabel 1. Hasil Pengujian Algoritma Bubble Sort dan Shell Sort Jumlah Shell Sort Bubble Sort (ns) Elemen (ns) 10 12.830 22.238 20 32.930 37.206 30 82.964 53.457 40 115.466 69.707 50 257.020 90.235 100 750.104 182.181 500 24.471.206 1.182.035 1000 40.353.841 1.906.908 5000 1.912.810.797 13.315.856 9000 5.670.408.495 23.396.084 Tabel 1 menunjukkan kecepatan algoritma Bubble Sort. Jumlah elemen 10 dan 20 memiliki waktu proses lebih cepat daripada algoritma Shell Sort. Sedangkan untuk jumlah elemen 30 sampai dengan 9000, algoritma Shell Sort lebih cepat daripada algoritma Bubble Sort. Tabel 2. Hasil Pengujian Algoritma Bubble Sort dan Shell-Bubble Sort Shell-Bubble Jumlah Bubble Sort Sort Elemen (ns) (ns) 10 12.830 48.325 20 32.930 74.840 30 82.964 122.736 40 115.466 153.955 50 257.020 345.544 100 750.104 936.134 500 24.471.206 17.624.896 1000 40.353.841 29.188.655 5000 1.912.810.797 111.313.582 9000 5.670.408.495 316.921.406 Tabel 2 menunjukkan kecepatan algoritma Bubble Sort. Jumlah elemen 10 sampai dengan 100 memiliki waktu proses lebih cepat daripada algoritma Shell-Bubble Sort. Sedangkan untuk jumlah elemen 500 sampai dengan 9000, algoritma Shell- Bubble Sort lebih cepat daripada algoritma Bubble Sort. Tabel 3. Hasil Pengujian Algoritma Shell Sort dan Shell-Bubble Sort Jumlah Shell Sort Shell-Bubble Elemen (ns) Sort (ns) 10 22.238 48.325 20 37.206 74.840 30 53.457 122.736 40 69.707 153.955 50 90.235 345.544 100 182.181 936.134 500 1.182.035 17.624.896 1.000 1.906.908 29.188.655 5.000 13.315.856 111.313.582 9.000 23.396.084 316.921.406 Tabel 3 menunjukkan kecepatan algoritma Shell Sort. Jumlah elemen 10 sampai dengan 9000 memiliki waktu proses lebih cepat daripada algoritma Shell-Bubble Sort. Dari hasil pengujian algoritma Bubble Sort, Shell Sort dan Shell-Bubble Sort yang menggunakan elemen acak dengan jumlah input yang sama, menunjukkan bahwa STMIK MUSIRAWAS Lubuklinggau 63
algoritma Bubble Sort lebih cepat daripada Shell Sort pada jumlah elemen acak 10 sampai 20 dan Shell-Bubble sort pada jumlah elemen acak 10 sampai 100. Sedangkan pada jumlah elemen acak 30 sampai 9.000, algoritma Shell Sort lebih cepat dibandingkan algoritma Bubble Sort dan algoritma Shell-Bubble Sort pada semua jumlah elemen acak. Algoritma Shell- Bubble Sort lebih cepat dari elemen Bubble Sort pada jumlah elemen acak 500 sampai dengan 9.000. V KESIMPULAN Dari pengujian yang telah dilakukan dapat disimpulkan bahwa algoritma Bubble Sort lebih cepat dibandingkan Shell Sort untuk jumlah elemen acak sampai dengan 20. Sedangkan untuk elemen acak 30 sampai dengan 9000, Shell Sort lebih cepat dibandingkan Bubble Sort dan Shell-Bubble Sort untuk semua jumlah elemen acak. Kemudian algoritma Shell-Bubble Sort lebih cepat dibandingankan algoritma Bubble Sort pada jumlah elemen acak 500 sampai dengan 9.000. [4] M. Khairullah, Enhancing Worst Sorting Algorithms, Int. J. Adv. Sci. Technol., vol. 56, pp. 13 26, 2013. [5] M. E. Al Rivan, Perbandingan Performa Kombinasi Algoritma Pengurutan Quick-Insertion Sort dan Merge-Insertion Sort, in ANNUAL RESEARCH SEMINAR 2016, 2016, vol. 2, no. 1, pp. 6 10. [6] M. E. Al Rivan, Perbandingan Kecepatan Gabungan Algoritma Utama Quick Sort dan Merge Sort dengan Algoritma Tambahan Insertion Sort, Bubble Sort dan Selection Sort, J. Tek. Inform. dan Sist. Inf., vol. 3, no. 2, pp. 319 331, 2017. [7] A. Azeta and C. Ayo, Improved Shellsort for the Worst-Case, the Best- Case and a Subset of the Average-Case Scenarios, J. Comput. Sci. Its Appl., vol. 14, no. 2, 2007. VI SARAN Adapun saran yang ingin penulis sampaikan yaitu dengan menambahkan jumlah elemen > 9.000 dan jarak spasi pertukaran elemen pada pengujian untuk melihat kinerja dari algoritma Bubble Sort, Shell Sort dan Shell-Bubble Sort dengan jumlah elemen > 9.000. VII DAFTAR PUSTAKA [1] D. T. V. D. Rao and B. Ramesh, Experimental Based Selection of Best Sorting Algorithm, Int. J. Mod. Eng. Res., vol. 2, no. 4, pp. 2908 2912, 2012. [2] Y. Yang, P. Yu, and Y. Gan, Experimental study on the five sort algorithms, 2011 2nd Int. Conf. Mech. Autom. Control Eng. MACE 2011 - Proc., pp. 1314 1317, 2011. [3] J. Alnihoud and R. Mansi, An enhancement of major sorting algorithms, Int. Arab J. Inf. Technol., vol. 7, no. 1, pp. 55 62, 2010. STMIK MUSIRAWAS Lubuklinggau 64