perbandingan kinerja algoritma bitonic sort, odd …
TRANSCRIPT
PERBANDINGAN KINERJA ALGORITMA BITONIC SORT, ODD-EVEN
SORT DAN COMB SORT
SKRIPSI
MARIATY H
141421005
PROGRAM EKSTENSI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2017
Universitas Sumatera Utara
PERBANDINGAN KINERJA ALGORITMA BITONIC SORT, ODD-EVEN SORT DAN COMB SORT
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu
Komputer
MARIATY H
141421005
PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2017
Universitas Sumatera Utara
PERSETUJUAN
Judul : PERBANDINGAN KINERJA ALGORITMA BITONIC SORT, ODD-EVEN SORT DAN COMB SORT
Kategori : SKRIPSI
Nama : MARIATY H
Nomor Induk Mahasiswa : 1414005
Program Studi : EKSTENSI S1 ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, April 2017
Komisi Pembimbing : Pembimbing 2 Pembimbing 1
Handrizal, S.Si., M.Comp.Sc Dr. Maya Silvi Lydia, M.Sc NIP - NIP 197401272002122001
Diketahui/Disetujui oleh Program Studi S1 Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M. Kom NIP.196203171991031001
Universitas Sumatera Utara
PERNYATAAN
PERBANDINGAN KINERJA ALGORITMA BITONIC SORT, ODD-EVEN SORT
DAN COMB SORT
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, April 2017
Mariaty H
141421005
Universitas Sumatera Utara
PENGHARGAAN
Puji dan syukur kehadirat Tuhan Yang Maha Esa, yang dengan rahmat dan karunia-Nya
penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar
Sarjana Komputer, pada Program Studi Ekstensi S1 Ilmu Komputer Fakultas Ilmu Komputer dan
Teknologi Informasi Universitas Sumatera Utara.
Pada pengerjaan skripsi dengan judul Perbandingan Kinerja Algoritma Bitonic Sort,
Odd-Even Sort dan Comb Sort, penulis menyadari bahwa banyak pihak yang turut membantu,
baik dari pihak keluarga, sahabat dan orang-orang terkasih yang memotivasi dalam
pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:
1. Bapak Prof. Dr. Runtung Sitepu, SH, M. Hum selaku Rektor Universitas Sumatera Utara.
2. Prof. Dr. Opim Salim Sitompul, M.Sc selaku Dekan Fakultas Ilmu Komputer dan
Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer
Universitas Sumatera Utara.
4. Ibu Dr. Maya Silvi Lydia, M.Sc selaku Dosen Pembimbing I yang telah meluangkan
waktu dan pikiran dalam membimbing dan mengarahkan penulis agar dapat
menyelesaikan skripsi ini.
5. Bapak Handrizal, S.Si., M.Comp.Sc selaku Dosen Pembimbing II yang telah meluangkan
waktu dan pikiran dalam membimbing dan mengarahkan penulis agar dapat
menyelesaikan skripsi ini.
6. Ibu Dian Rachmawati, S.Si., M.Kom selaku Dosen Pembanding I yang telah memberikan
arahan, kritik, dan saran kepada penulis selama pengerjaan skripsi.
7. Bapak M.Andri Budiman, S.T., M.Comp.Sc., M.EM selaku Dosen Pembanding II yang
telah memberikan kritik dan saran kepada penulis selama pengerjaan skripsi.
8. Seluruh tenaga pengajar dan pegawai di Fakultas Ilmu Komputer dan Teknologi
Informasi Universitas Sumatera Utara.
9. Keluarga tercinta yang selalu memberikan kasih sayang, doa, semangat, serta dukungan
kepada penulis.
Universitas Sumatera Utara
10. Teman-teman seperjuangan skripsi dan teman-teman lainnya dalam diskusi pembuatan
skripsi serta seluruh teman-teman Ekstensi stambuk 2014.
11. Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat penulis
ucapkan satu per satu yang telah banyak membantu dalam penyelesaian skripsi ini.
Penulis menyadari bahwa skripsi ini dalam penyusunan dan masih terdapat kekurangan.
Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat
membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semua.
Medan, April 2017
Penulis,
Mariaty H
Universitas Sumatera Utara
ABSTRAK
Pengurutan merupakan suatu proses menyusun kembali suatu himpunan objek menggunakan aturan tertentu. Data yang akan diurutkan memiliki berbagai macam jenis baik dalam hal banyaknya data maupun jenis datanya. Masalahnya, tidak ada satupun algoritma yang terbaik untuk setiap situasi yang dihadapi. Bahkan sangat sulit untuk menentukan algoritma mana yang paling baik untuk digunakan dalam situasi tertentu. Oleh karena itu, dibuatlah suatu aplikasi perbandingan kinerja algoritma pengurutan. Pada penelitian ini algoritma yang digunakan adalah algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort. Penelitian ini bertujuan untuk mengetahui kinerja ketiga algoritma tersebut secara teoretikal dan real time. Algoritma Bitonic Sort merupakan algoritma pengurutan paralel menggunakan sorting network. Berbeda dengan Bitonic Sort, Odd-Even Sort beroperasi pada dua fase alternatif, yaitu fase genap(even) dan fase ganjil (odd). Pada fase genap, proses bernomor genap menukarkan bilangannya dengan tetangga sebelah kanannya. Begitu pula, pada fase ganjil, proses bernomor ganjil menukarkan bilangannya dengan tetangga sebelah kanannya. Pada algoritma Comb Sort terdapat shrink factor yang memberikan efek yang sangat bagus pada efisensi comb sort. Shrink factor berfungsi untuk menentukan ukuran gap. Shrink factor biasanya bernilai 1.24. Gap merupakan jarak antara dua elemen yang akan dibandingkan. Pembulatan nilai gap adalah ke bawah (floor). Hasil penelitian ini menunjukkan bahwa algoritma Comb Sort memiliki rata-rata waktu tercepat untuk melakukan pengurutan 10.000 karakter acak dengan waktu 13,3817 ms, 41,03088 ms untuk Bitonic Sort dan 2123,70183 ms untuk Comb Sort. Untuk pengurutan 10.000 karakter terurut, Odd-Even Sort memiliki waktu tercepat yaitu 0,3952 ms, 64,6939 ms untuk Bitonic Sort menjadi yang paling lama dan 13,8858 ms untuk Comb Sort . Untuk pengurutan data bertipe string sebanyak 250 kata yaitu 3,4262 ms untuk Comb Sort, 5,8232 ms untuk Bitonic Sort dan 12,9607 ms untuk Odd-Even Sort . Odd-Even Sort dan Comb Sort memiliki nilai T(n) yang sama yaitu n2 sedangkan Bitonic Sort memiliki T(n) = (n(log n)2).
Kata kunci : Pengurutan, Algoritma Bitonic Sort, Algoritma Odd-Even Sort, Algoritma Comb Sort, kompleksitas algoritma.
Universitas Sumatera Utara
COMPARISON PERFORMANCE OF ALGORITHMS BITONIC SORT, ODD-EVEN
SORT AND COMB SORT
ABSTRACT
Sorting is a process to arrange some objects using a set of specific rules. The data will be sorted have many kind both in terms of the amount of data and data types. The problem is no algorithm is best for each situation encountered. It is difficult to determine which algorithm is better to using in a particular situation. Therefore, then made a comparison of application performance sorting algorithms. In this research the algorithms that use is Bitonic Sort, Odd-Even Sort and Comb Sort. This research aims to determine the performance of the three algorithms theoretically and in real time. Bitonic Sort algorithm is a parallel sorting algorithms using a sorting network. Unlike the Bitonic Sort, Odd-Even Sort operates on two alternative phases, namely the phase of even (even) and odd phase (odd). In phase even, even-numbered process to redeem that number with the right of number. Similarly, in the phase of odd, odd-numbered process to redeem that number with the right of number. On Comb Sort algorithm are shrink factor which gives a very good effect on the efficiency of comb sort. Shrink factor used to determine the size of the gap. Shrink factor usually worth 1.24. Gap is the distance between the two elements to be compared. Rounding the value gap is down (floor). The results of this research show that the algorithm Comb Sort has an average fastest time to do the sorting 10,000 random character with a time of 13.3817 ms, 41.03088 ms for Bitonic Sort and 2123.70183 ms for Comb Sort. For sorting 10,000 character sequence, Odd-Even Sort had the fastest time is 0.3952 ms, 64.6939 ms for Bitonic Sort become the longest and 13.8858 ms for Comb Sort. To sort the data type string as many as 250 words is 3.4262 ms for Comb Sort, 5.8232 ms for Bitonic Sort and 12.9607 ms for Odd-Even Sort. Odd-Even Comb Sort Sort and has a same value of T (n) is n2 while Bitonic Sort have T (n) = (n (log n) 2).
Keyword : Sorting, Bitonic Sort Algorithm, Odd-Even Sort Algorithm, Comb Sort Algorithm, algorithm complexity
Universitas Sumatera Utara
DAFTAR ISI
PERSETUJUAN ii PERNYATAAN iii PENGHARGAAN iv ABSTRAK vi ABSTRACT vii DAFTAR ISI viii DAFTAR TABEL xi DAFTAR GAMBAR xii LAMPIRAN xv BAB 1. PENDAHULUAN 1
1.1. Latar Belakang 1 1.2. Rumusan Masalah 2 1.3. Batasan Masalah 2 1.4. Tujuan Penelitian 3 1.5. Manfaat Penelitian 3 1.6. Metodologi Penelitian 3 1.7. Sistematika Penulisan 4
BAB 2. LANDASAN TEORI 6 2.1. Pengertian Algoritma 6 2.2. Kompleksitas Algoritma 7 2.3. Notasi Asimptotik 7 2.4. Struktur Data 10 2.5. Algoritma Bitonic Sort 11
2.5.1. Contoh dan Proses Algoritma Bitonic Sort 15 2.6. Algoritma Odd-Even Sort 16
2.6.1. Contoh dan Proses Algoritma Odd-Even Sort 17 2.7. Algoritma Comb Sort 17
2.7.1. Contoh dan Proses Kerja Algoritma Comb Sort 18 2.8. Tinjauan Penelitian yang Relevan 20
BAB 3. ANALISIS DAN PERANCANGAN SISTEM 23 3.1. Analisis Sistem 23
3.1.1. Analisis Masalah 23
Universitas Sumatera Utara
3.1.2. Analisis Kebutuhan 24 3.1.2.1. Analisis Kebutuhan Fungsional 24 3.1.2.2. Analisis Kebutuhan Nonfungsional 24
3.1.3. Pemodelan Sistem 25 3.1.3.1. Use Case Diagram 25 3.1.3.2. Activity Diagram 30 3.1.3.3. Sequence Diagram 34
3.2. Flowchart Sistem 36 3.3. Pseudocode Program 37
3.3.1. Pseudocode Algoritma Bitonic Sort 37 3.3.2. Pseudocode Algoritma Odd-Even Sort 38 3.3.3. Pseudocode Algoritma Comb Sort 39
3.4. Perancangan Sistem 39 3.4.1. Rancangan halaman menu utama 39 3.4.2. Rancangan halaman Character Sorting 40 3.4.3. Rancangan Halaman Result 42 3.4.4. Rancangan Halaman Char Sorting Analyze 45 3.4.5. Rancangan Halaman Word Sorting 46 3.4.6. Rancangan Halaman String Sorting Analyze 48 3.4.7. Rancangan Halaman About 49
BAB 4. IMPLEMENTASI DAN PENGUJIAN 50 4.1. Implementasi 50 4.2. Antarmuka Sistem 50
4.2.1. Halaman Menu Utama 51 4.2.2. Halaman Character Sorting 51 4.2.3. Halaman Bitonic Sort Result 53 4.2.4. Halaman Odd-Even Sort Result 54 4.2.5. Halaman Comb Sort Result 55 4.2.6. Halaman Char Sorting Analyze 56 4.2.7. Halaman Word Sorting 58 4.2.8. Halaman String Sorting Analyze 59 4.2.9. Halaman About 61
4.3. Pengujian Sistem 61 3.3.1. Pengujian Generate Data 61
Universitas Sumatera Utara
3.3.2. Pengujian Pengurutan Karakter 63 3.3.3. Pengujian Grafik Perbandingan 69 3.3.4. Hasil Pengujian Pengurutan Karakter 72 3.3.5. Pengujian Pengurutan String 79 3.3.6. Hasil pengujian pengurutan string 81
3.4. Kompleksitas Algoritma 82 3.4.1. Kompleksitas Algoritma Bitonic Sort 82 3.4.2. Kompleksitas Comb Sort 82 4.4.3. Kompleksitas Algoritma Odd-Even Sort 84
BAB 5. KESIMPULAN DAN SARAN 87 5.1. Kesimpulan 87 5.2. Saran 87
Daftar Pustaka 89
Universitas Sumatera Utara
DAFTAR TABEL
Tabel 2.1. Kelompok algoritma berdasarkan kompleksitas waktu asimptotiknya 7 Tabel 3.1. Dokumentasi Naratif Use Case Char Sort 26 Tabel 3.2. Dokumentasi Naratif Use Case Word Sort 28 Tabel 3.3. Dokumentasi Naratif Use Case About 29 Tabel 3.4. Dokumentasi Naratif Use Case Exit 30 Tabel 3.5. Dokumentasi Naratif Activity Diagram 32 Tabel 3.6. Keterangan halaman menu utama 40 Tabel 3.7. Keterangan halaman Character Sorting 41 Tabel 3.8. Keterangan Halaman Bitonic Sort Result 42 Tabel 3.9. Keterangan Halaman Odd-Even Sort Result 43 Tabel 3.10. Keterangan Halaman Comb Sort Result 44 Tabel 3.11. Keterangan Halaman Char Sorting Analyze 45 Tabel 3.12. Keterangan Halaman Word Sorting 47 Tabel 3.13. Keterangan Halaman String Sorting Analyze 48 Tabel 3.14. Keterangan Halaman About 49 Tabel 4.1 Hasil Pengujian algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort pada
pengurutan data terurut 72 Tabel 4.2 Hasil Pengujian algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort pada
pengurutan data acak 75 Tabel 4.3 Hasil pengujian pengurutan string 81 Tabel 4.5 Kompleksitas Fungsi Swap algoritma Comb Sort 82 Tabel 4.6 Kompleksitas Fungsi Sort algoritma Comb Sort 83 Tabel 4.7 Kompleksitas Fungsi Swap algoritma Odd-Even Sort 84 Tabel 4.8 Kompleksitas Fungsi InnerSort algoritma Odd-Even Sort 85 Tabel 4.9 Kompleksitas Fungsi Sort algoritma Odd-Even Sort 85
Universitas Sumatera Utara
DAFTAR GAMBAR
Gambar 2.1. Grafik fungsi Big-Oh (Sumber: Dave & Dave, 2008) 8 Gambar 2.2. Grafik fungsi Big-Theta (Sumber: Dave & Dave, 2008) 9 Gambar 2.3. Grafik fungsi Big-Omega (Sumber: Dave & Dave, 2008) 10 Gambar 2.4. Algoritma Comparator 11 Gambar 2.5. Comparison Network 11 Gambar 2.6. Half-Cleaner 12 Gambar 2.7. Bitonic-sorter 13 Gambar 2.8. Merging Network 14 Gambar 2.9. Bitonic-Sorter 15 Gambar 2.10. Proses Algoritma Bitonic Sort 16 Gambar 2.11. Proses Algoritma Odd-Even Sort 17 Gambar 2.12. Iterasi 1 Algoritma Comb Sort. 18 Gambar 2.13. Iterasi 2 Algoritma Comb Sort 19 Gambar 2.14. Iterasi 3 Algoritma Comb Sort 19 Gambar 2.15. Iterasi 4 Algoritma Comb Sort 20 Gambar 2.16. Iterasi 5 Algoritma Comb Sort 20 Gambar 3.1. Diagram Ishikawa 23 Gambar 3.2. Use Case Diagram 25 Gambar 3.3. Activity Diagram 31 Gambar 3.4. Sequence Diagram 35 Gambar 3.5. Flowchart Char Sort 36 Gambar 3.6. Flowchart String Sort 37 Gambar 3.7. Rancangan halaman menu utama 40 Gambar 3.8. Rancangan Halaman Character Sorting 40 Gambar 3.9. Rancangan Halaman Result Bitonic Sort Result 42 Gambar 3.10. Rancangan Halaman Odd-Even Sort Result 43 Gambar 3.11. Rancangan Halaman Comb Sort Result 44 Gambar 3.12. Rancangan Halaman Char Sorting Analyze 45 Gambar 3.13. Rancangan Halaman Word Sorting 47 Gambar 3.14. Rancangan Halaman String Sorting Analyze 48 Gambar 3.15. Rancangan Halaman About 49 Gambar 4.1. Halaman Menu Utama 51
Universitas Sumatera Utara
Gambar 4.2. Halaman Character Sorting sebelum proses sorting 52 Gambar 4.3. Halaman Character Sorting setelah proses sorting 53 Gambar 4.4. Halaman Bitonic Sort Result 54 Gambar 4.5. Halaman Odd-Even Sort Result 55 Gambar 4.6. Halaman Comb Sort Result 56 Gambar 4.6. Halaman Char Sorting Analyze 57 Gambar 4.7. Dialog print pada halaman Char Sorting Analyze 57 Gambar 4.8. Dialog save pada halaman Char Sorting Analyze 58 Gambar 4.9. Halaman Word Sorting sebelum proses sorting 58 Gambar 4.10. Halaman Word Sorting setelah proses sorting 59 Gambar 4.11. Halaman String Sorting Analyze 59 Gambar 4.12. Dialog print pada halaman String Sorting Analyze 60 Gambar 4.13. Dialog save pada halaman String Sorting Analyze 60 Gambar 4.14. Halaman About 61 Gambar 4.15. Generate data Numeric 62 Gambar 4.16. Generate data Alphabet 62 Gambar 4.17. Generate data Alphanumeric 63 Gambar 4.18. Generate data Alphanumeric & Symbol 63 Gambar 4.19. Hasil pengurutan algoritma Bitonic Sort tipe karakter numeric 64 Gambar 4.20. Hasil pengurutan algoritma Odd-Even Sort tipe karakter numeric 64 Gambar 4.21. Hasil pengurutan algoritma Comb Sort tipe karakter numeric 65 Gambar 4.22. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphabet 65 Gambar 4.23. Hasil pengurutan algoritma Odd-Even Sort tipe karakter alphabet 66 Gambar 4.24. Hasil pengurutan algoritma Comb Sort tipe karakter alphabet 66 Gambar 4.25. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphanumeric 67 Gambar 4.26. Hasil pengurutan algoritma Odd-Even Sort tipe karakter alphanumeric 67 Gambar 4.27. Hasil pengurutan algoritma Comb Sort tipe karakter alphanumeric 68 Gambar 4.28. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphanumeric & symbol 68 Gambar 4.29. Hasil pengurutan algoritma Odd-Even Sort 69 tipe karakter alphanumeric & symbol 69 Gambar 4.30. Hasil pengurutan algoritma Comb Sort tipe karakter alphanumeric & symbol 69 Gambar 4.31. Grafik perbandingan pengurutan karakter numeric 70 Gambar 4.32. Grafik perbandingan pengurutan karakter alphabet 70 Gambar 4.33. Grafik perbandingan pengurutan karakter alphanumeric 71
Universitas Sumatera Utara
Gambar 4.34. Grafik perbandingan pengurutan karakter alphanumeric & symbol 71 Gambar 4.35 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter
numeric 73 Gambar 4.36 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter
alphabet 73 Gambar 4.37 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter
alphanumeric 74 Gambar 4.38 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter
alphanumeric & symbol 74 Gambar 4.39. Grafik perbandingan running time pengurutan data acak untuk tipe karakter
numeric 77 Gambar 4.40. Grafik perbandingan running time pengurutan data acak untuk tipe karakter
alphabet 78 Gambar 4.41. Grafik perbandingan running time pengurutan data acak untuk 78 tipe karakter alphanumeric 78 Gambar 4.42. Grafik perbandingan running time pengurutan data acak untuk tipe karakter
alphanumeric & symbol 79 Gambar 4.43. Pengurutan String 80 Gambar 4.44. Grafik perbandingan pengurutan string 80 Gambar 4.45. Grafik perbandingan running time pengurutan string 81
Universitas Sumatera Utara
LAMPIRAN
LISTING PROGRAM A-1 CURRICULUM VITAE B-1
Universitas Sumatera Utara
BAB 1 PENDAHULUAN
1.1. Latar Belakang
Sorting atau pengurutan merupakan suatu proses menyusun kembali suatu himpunan objek
menggunakan aturan tertentu. Sorting merupakan salah satu tugas dari sekian banyak tugas
komputer yang dilakukan, yang diteliti secara luas, dan memiliki banyak algoritma yang
berbeda yang dibangun. Sorting memiliki manfaat yang penting dalam proses pencarian.
Data yang tidak terurut harus dicari secara normal menggunakan waktu pembacaan
sekuensial dari semua data. Hal ini membutuhkan waktu yang sangat lama. Pada data yang
telah terurut akan membiarkan dirinya dicari dengan menggunakan teknik pencarian data
sederhana.
Ada 2 jenis pengurutan secara umum yaitu ascending (data terurut naik) dan descending
(data terurut turun). Tujuan pengurutan adalah untuk mempermudah pencarian data.
Pengurutan data menjadi sesuatu yang penting dalam ilmu komputer karena waktu yang
dibutuhkan dalam melakukan proses pengurutan perlu dipertimbangkan ( Saniman, 2010).
Data yang akan diurutkan memiliki berbagai macam jenis baik dalam hal banyaknya data
maupun jenis datanya. Masalahnya, tidak ada satupun algoritma yang terbaik untuk setiap
situasi yang dihadapi. Bahkan sangat sulit untuk menentukan algoritma mana yang paling
baik untuk digunakan dalam situasi tertentu. Hal ini disebabkan adanya beberapa faktor yang
mempengaruhi efektifitas proses pengurutan yaitu:
1. Banyaknya data yang akan diurutkan.
2. Kapasitas pengingat (memori) apakah mampu menyimpan semua data yang dimiliki.
3. Tempat penyimpanan data.
Kelebihan dari data yang telah terurut adalah memudahkan user untuk melakukan
penambahan data, pengubahan data, dan penghapusan data. Dalam kondisi terurut juga akan
mempermudah untuk mencari data yang hilang atau terhapus.
Melihat pentingnya sorting (pengurutan) dalam pengelolaan data, telah ada beberapa
penelitian yang melakukan analisis perbandingan kinerja beberapa algoritma sebagai contoh
analisis perbandingan kompleksitas pengurutan nilai algoritma Quick sort, Shell sort,
Insertion sort, Selection sort dan Bubble sort (Rahayuningsih, 2016), aplikasi visualisasi dan
Universitas Sumatera Utara
perbandingan metode-metode pengurutan data yang dilakukan dengan menggunakan
algoritma Bubble sort, Bucket sort, Comb sort, Pigeon Hole sort (Murtado & Harsamuda.
2014), analisis perbandingan algoritma Bubble sort, Merge sort dan Quick sort dalam proses
pengurutan kombinasi angka dan huruf (Sonita & Nurtaneo, 2015), algoritma paralel Odd
Even Transposition pada model jaringan nonlinier (Ernastuti et al. 2010).
Oleh karena itu, penulis akan melakukan perbandingan kinerja terhadap algoritma
Bitonic Sort, Odd-Even Sort, dan Comb Sort. Hal ini menjadi dorongan untuk memberikan
manfaat dan kemudahan terhadap pengguna dalam mengenal, mengetahui dan memahami.
1.2. Rumusan Masalah
Masalah yang akan dibahas pada penelitian ini ialah belum adanya perbandingan kinerja 3
algoritma pengurutan yakni Bitonic Sort, Odd-Even Sort, dan Comb Sort dalam melakukan
proses pengurutan.
1.3. Batasan Masalah
Adapun yang menjadi batasan masalah yaitu :
1. Mengukur kemampuan sistem dalam melakukan pengurutan data bertipe string,
pengukuran kecepatan proses (running time) pengurutan string / kata dalam satuan
waktu (ms) serta ukuran kompleksitas algoritmanya adalaha Big-ϴ.
2. Perbandingan kinerja algoritma Bitonic Sort, Odd-even Sort dan Comb Sort dilakukan
secara teoretikal dan real time.
3. Tipe struktur data yang digunakan adalah list.
4. Data diurutkan secara ascending (dari kecil ke besar) dan descending (dari besar ke
kecil).
5. Perancangan aplikasi perbandingan ini menggunakan bahasa pemrograman C# dan
file bertipe text (txt) yang berisikan kata-kata yang akan diurutka. Delimiter (pemisah)
yang digunakan yaitu whitespace dan newline.
Universitas Sumatera Utara
1.4. Tujuan Penelitian
Tujuan dari penelitian ini adalah:
1. Mengetahui theoretical running time algoritma dari ketiga algoritma tersebut dalam
Big ϴ.
2. Mengetahui real running time ketiga algoritma tersebut dalam satuan waktu (ms).
1.5. Manfaat Penelitian
Manfaat yang diharapkan dari penelitian ini antara lain:
1. Memahami bagaimana menganalisis theoretical running time dan real running time
algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort pada proses sorting data.
2. Sebagai bahan referensi mengenai algoritma Bitonic Sort, Odd-Even Sort dan Comb
Sort pada proses sorting data.
1.6. Metodologi Penelitian
Tahapan penelitian yang dilakukan dalam penelitian ini adalah :
a. Studi Literatur
Studi ini dilakukan dengan cara mempelajari, meneliti dan menelaah berbagai
literatur-literatur dari perpustakaan yang bersumber dari buku-buku, teks, jurnal
ilmiah maupun hasil penelitian terdahulu sebagai referensi yang diperlukan dalam
melakukan penelitian.
b. Analisis dan Perancangan
Dengan adanya rumusan dan batasan masalah, kebutuha perancangan dianalisis
disertai pembuatan Flowchart, Unified Modeling Language (UML), Design Interface.
c. Implementasi
Sistem diimplementasikan dengan metode algoritma Bitonic Sort, Odd-Even Sort dan
Comb Sort menggunakan bahasa pemrograman C#.
d. Pengujian
Sistem yang akan dibuat akan diuji dengan mengurutkan string secara ascending lalu
melihat kecepatan proses pengurutan kata pada sistem yang akan dibuat dengan
menggunakan algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort.
Universitas Sumatera Utara
e. Penyusunan Skripsi
Pada tahap ini dilakukan penyusunan laporan hasil perancangan sistem ke dalam
format penulisan skripsi.
1.7. Sistematika Penulisan
Sistematika penulisan skripsi ini terdiri dari beberapa bagian yaitu :
BAB 1 PENDAHULUAN
Bab ini menjelaskan latar belakang judul skripsi “Perbandingan Kinerja
Algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort”, rumusan
masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode
penelitian dan sistematika penulisan.
BAB 2 LANDASAN TEORI
Bab ini berisi tentang penjelasan singkat mengenai algoritma,
kompleksitas algoritma, notasi asimptotik, struktur data, algoritma Bitonic
Sort, algoritma Odd-Even Sort dan algoritma Comb Sort.
BAB 3 ANALISIS PERANCANGAN SISTEM
Bab ini membahas tentang analisis terhadap masalah penelitian dan
perancangan terhadap sistem yang akan dibangun, cara kerja sistem
disertai pembuatan flowchart, Unified Modeling Language (UML), Design
Interface.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Bab ini berisi tentang pembuatan sistem dan coding sesuai dengan analisis
dan perancangan, kemudian melakukan pengujian sistem, serta
pembahasan hasil pengujian dan analisisnya.
Universitas Sumatera Utara
BAB 5 KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dari keseluruhan uraian bab-bab
sebelumnya dan saran berdasarkan hasil pengujian yang diharapkan dapat
bermanfaat untuk penelitian selanjutnya yang berhubungan.
Universitas Sumatera Utara
BAB 2
LANDASAN TEORI
2.1. Pengertian Algoritma
Algorism yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja”far
Muhammad Ibnu Musa Al Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi
Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang
artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari
judul buku itu juga diperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari Algorism
menjadi Algorithm muncul karena kata Algorism sering dikelirukan dengan Arithmetic,
sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah
menjadi biasa. Seiring waktu kata Algorithm berangsur-angsur dipakai sebagai metode
perhitungan (komputasi) secara umum, sehingga kehilangan makna kata (Barakbah et al.
2013).
Pengertian algoritma sangat lekat dengan kata logika, yaitu kemampuan seorang manusia
untuk berfikir dengan akal tetang suatu permasalahan menghasilkan sebuah kebenaran,
dibuktikan dan dapat diterima akal, logika seringkali dihubungkan dengan kecerdasan.
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun
secara sistematis (Munir, 2005). Menurut KBBI (Kamus Besar Bahasa Indonesia), algoritma
adalah urutan logis pengambilan keputusan untuk pemecahan masalah.
Tidak semua urutan langkah penyelesaian masalah yang logis dapat disebut sebagai
algoritma. Menurut Munir, 2005, Donald E. Knuth (1998) menyatakan bahwa algoritma
harus mempunyai lima ciri penting yang meliputi:
1. Finiteness (keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah
langkah proses.
2. Definiteness (kepastian), setiap langkah harus didefinisikan secara tepat dan tidak
berarti ganda.
3. Input (masukan), algoritma memiliki nol atau lebih data masukan(input).
4. Output (keluaran), algoritma mempunyai nol atau lebih hasil keluaran (output).
5. Effectiveness (efektivitas), algoritma harus sangkil (efektif), langkah-langkah
algoritma dikerjakan dalam waktu yang wajar.
Universitas Sumatera Utara
2.2. Kompleksitas Algoritma
Kebenaran suatu algoritma harus diuji dengan jumlah masukan tertentu utuk melihat kinerja
algoritma berupa waktu yang diperlukan untuk menjalankan algoritmanya dan ruang memori
yang diperlukan untuk struktur datanya. Besaran yang dipakai untuk menerangkan model
penilaian waktu/ruang algoritma adalah dengan menggunakan kompleksitas algoritma
(Nugraha , 2012). Ada 2 macam kompleksitas algoritma yaitu:
a. Kompleksitas waktu adalah mengukur jumlah perhitungan (komputasi) yang
dikerjakan oleh komputer ketika menyelesaikan suatu masalah dengan menggunakan
algoritma. Ukuran yang dimaksud mengacu ke jumlah langkah-langkah perhitungan
dan waktu tempuh pemrosesan.
b. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam
eksekusi program.
2.3. Notasi Asimptotik
Kompleksitas waktu asimptotik adalah analisis efisiensi asimptotik dari suatu algoritma
untuk menentukan kompleksitas waktu yang sesuai. Analisis dilakukan untuk nilai n cukup
besar dan bahkan tidak terbatas. Notasi asimptotik adalah notasi yang digunakan untuk
menentukan kompleksitas waktu asimptotik dengan melihat waktu tempuh (running time)
algoritma (Azizah, 2013).
Notasi asimptotik dapat dituliskan dengan beberapa simbol, yaitu :
1. Notasi Big O, yaitu notasi asimptotik sebuah fungsi algoritma yang digunakan ketika
hanya diketahui batas atas. Notasi O menyatakan running time dari suatu algoritma
untuk kemungkinan terburuk. Notasi O memiliki beberapa bentuk, dapat dilihat pada
Tabel 2.1.
Tabel 2.1. Kelompok algoritma berdasarkan kompleksitas waktu asimptotiknya
Notasi Nama Penjelasan O(1) Konstan Running time algoritma yang sedang dianalisis tetap, tidak
bergantung pada n.
O(log n) Logaritmik Laju pertumbuhan waktu lebih lambat dari pertumbuhan n.
Universitas Sumatera Utara
Notasi Nama Penjelasan O(n) Linear Bila n menjadi 2n maka running time algoritma menjadi 2
kali running time semula.
O(n log n) Linearitmik (n
log n) atau Log
Linear
Terdapat pada algoritma yang membagi persoalan menjadi
beberapa persoalan yang lebih kecil, menyelesaikan setiap
persoalan secara independen kemudian menggabungkan
solusi masing-masing persoalan.
O(n2) Kuadratik Biasa digunakan untuk kasus dengan n yang berukuran kecil.
Bila n dinaikkan 2 kali semula, maka running time algoritma
akan menjadi empat kali semula.
O(n3) Kubik Bila n dinaikkan 2 kali semula, maka running time algoritma
akan menjadi delapan kali semula.
O(2n) Eksponensial Bila n dinaikkan 2 kali semula, maka running time algoritma
akan menjadi kuadrat kali semula.
O(n!) Faktorial Algoritma jenis ini akan memproses setiap masukan dan
menghubungkannya dengan n-1 masukan lainnya. Bila n
dinaikkan 2 kali semula, maka running time algoritma akan
menjadi faktoria dari 2n.
Untuk fungsi g(n), didefinisikan O(g(n)) sebagai big-oh dari n, sebagai himpunan:
O(g(n)) = {f(n) : ada konstanta positif c dan n0, sedemikian rupa untuk semua n ≥ n0,
sehingga 0 ≤ f(n) ≤ cg(n)}. f(n) secara intuitif merupakan himpunan seluruh fungsi
yang rateofgrowth-nya adalah sama atau lebih kecil dari g(n). g(n) adalah asymptotic
upper bound untuk f(n). Untuk grafik fungsi dapat dilihat pada Gambar 2.1.
Gambar 2.1. Grafik fungsi Big-Oh (Sumber: Dave & Dave, 2008)
Universitas Sumatera Utara
2. Notasi Little o, yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas
namun tidak secara ketat terikat (not asymptotically tight).
3. Notasi Theta (𝜃𝜃), yaitu notasi asimptotik sebuah fungsi algoritma untuk batas atas dan
bawah.
Untuk fungsi g(n), kita definisikan Θ(g(n)) sebagai big-theta dari n, sebagai
himpunan:
Θ(g(n)) = {f(n) : ada konstanta positif c1, c2 dan n0, sedemikian rupa untuk semua n
≥ n0, sehingga 0 ≤ c1g(n) ≤ f(n) ≤ c1g(n)}. f(n) merupakan Θ(g(n)) pada nilai antara
c1 sampe c2. g(n) adalah asymptoticallytight bound untuk f(n).
Secara intuitif merupakan himpunan seluruh fungsi yang rateofgrowth-nya adalah
sama dengan g(n). Untuk grafik fungsi Big-Theta dapat dilihat pada Gambar 2.2.
Gambar 2.2. Grafik fungsi Big-Theta (Sumber: Dave & Dave, 2008)
4. Notasi Omega ( ), yaitu notasi asimptotik sebuah fungsi algoritma untuk batas
bawah, notasi ini berlawanan dengan notasi little-o.
Untuk fungsi g(n), didefinisikan Ω(g(n)) sebagai big-omega dari n, sebagai
himpunan:
Ω(g(n)) = {f(n) : ada konstanta positif c dan n0, sedemikian rupa untuk semua n ≥ n0,
sehingga 0 ≤ cg(n)≤ f(n) }. f(n) secara intuitif merupakan himpunan seluruh fungsi
yang rateofgrowth-nya adalah sama atau lebih tinggi dari g(n). g(n) adalah asymptotic
lower bound untuk f(n). Untuk grafik fungsi Big-Omega dapat dilihat pada Gambar
2.3.
Universitas Sumatera Utara
Gambar 2.3. Grafik fungsi Big-Omega (Sumber: Dave & Dave, 2008)
2.4. Struktur Data
Struktur data adalah sebuah skema organisasi, seperti variabel dan array,dll, yang diterapkan
pada data sehingga data dapat diinterpretasikan dan sehingga operasi-operasi spesifik dapat
dilaksanakan pada data tersebut. Pemakaian struktur data yang tepat didalam proses
pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan
program secara keseluruhan lebih efisien dan sederhana. Data adalah representasi dari fakta
dunia nyata.
Setiap data memiliki tipe data. Tipe data adalah pengelompokkan data berdasarkan isi
dan sifatnya. Secara garis besar tipe data dapat dikategorikan menjadi tiga macam yaitu
(Barakbah et al. 2013):
1. Tipe data dasar (tipe data primitif / tipe data sederhana) adalah tipe data yang sudah
ada dan dijadikan standar dalam bahasa pemrograman tertentu. Contoh tipe data dasar
adalah integer(bilangan bulat), float atau double(bilangan real), char(karakter),
boolean(logika)
2. Tipe data bentukan atau tipe data komposit adalah tipe data yang dibentuk dari tipe
data dasar. Contoh tipe data bentukan adalah array, string, record, union, struct, dll.
Tujuan dibuatnya tipe data bentukan adalah:
a. Mempermudah proses pemrograman.
b. Mempermudah dalam penambahan variabel.
c. Mempermudah pengelompokkan data sehingga lebih teratur.
Tipe data abstrak atau Abstract Data Type (ADT) adalah model matematika dari
obyek data yang menyempurnakan tipe data dengan cara mengaitkannya dengan
Universitas Sumatera Utara
fungsi-fungsi yang beroperasi pada data yang bersangkutan. Contoh tipe data abstrak
adalah stack, queue, list, tree, graph, dll.
2.5. Algoritma Bitonic Sort
Algoritma Bitonic Sort adalah suatu algoritma pengurutan paralel menggunakan sorting
network. Comparator merupakan Komponen terkecil dari sorting network, yaitu suatu
perangkat dengan dua masukan, x dan y, dan dua keluaran, x’ dan y’, dimana x’=min(x,y)
dan y’=max(x,y) (Mukhlis et al. 2014), dapat dilihat pada Gambar 2.4.
COMPARATOR(x,y)
if x > y then
temp ← x
x ← y
y ← temp
y
x7 3
3 7
x’
y’
Gambar 2.4. Algoritma Comparator
Diasumsikan setiap comparator membutuhkan waktu O(l) untuk melakukan operasinya.
Dengan menghubungkan sejumlah comparator dengan kabel, dapat dibentuk sebuah
comparison network, dapat dilihat pada Gambar 2.5.
a2
a3
a4
a19 5 2
65
2
6
9
2
6
5
9
5
6
2
9
Gambar 2.5. Comparison Network
Universitas Sumatera Utara
Sebuah sorting network adalah comparison network dimana untuk sembarang
masukan akan menghasilkan keluaran yang terurut menaik (b1 ≤ b2 ≤ ... ≤ bn).
Suatu bitonic sequence adalah suatu sequence yang terurut menaik kemudian terurut
menurun atau terurut menurut kemudian menaik. Sequence <1,4,6,8,3,2> dan <9,8,3,2,4,6>
adalah contoh bitonic sequence.
Suatu half cleaner adalah comparison network dengan kedalaman l dimana
dimasukkan ke-i akan dibandingkan dengan masukan ke-(i + n/2) untuk i = 1,2,...,n/2. Jika
masukan dari half cleaner adalah bitonic sequence berukuran n, maka keluarannya adalah
dua bitonic sequence yang masing-masing berukuran n/2 dan data pada bitonic sequence ke-2
≥ data bitonic sequence ke-1, dapat dilihat pada Gambar 2.6. Half cleaner dapat
diterjemahkan menjadi modul algoritma berikut ini, yang waktu eksekusinya adalah O(l) :
HALF-CLEANER (a, start, n)
for i ← start to start + n/2-1 in parallel do
COMPARATOR (a[i], a[ i+n/2])
5
6 3
b1
b2
9
7
8
3
5
1
b3
b4
b5
b6
b7
b8
1
8
6
7
9
Gambar 2.6. Half-Cleaner
Universitas Sumatera Utara
Dengan menggunakan half cleaner dapat dibentuk Bitonic Sorter. Bitonic Sorter(n)
dapat dibentuk dengan menghubungkan kabel keluaran dari half cleaner (n) dengan kabel
masukan dari dua Bitonic Sorter(n/2), dapat dilihat pada Gambar 2.7.
b1
b2
b3
b4
b5
b6
b7
b8
a1
a2
a3
a4
a5
a6
a7
a8
HALF CLEANER (n)
BITONIC SORTER (n/2)
BITONIC SORTER (n/2)
Gambar 2.7. Bitonic-sorter
BITONIC-SORTER(a, start, n) /*asumsi n genap*/
HALF-CLEANER(a, start, n)
if n > 2 then
for i ← 0 to 1 in parallel do
BITONIC-SORTER (a, start + i*n/2, n/2)
Waktu eksekusi Bitonic Sorter(n) dapat dihitung sebagai berikut:
T(n) = �0 , 𝑛𝑛 = 1 1 + 𝑇𝑇(𝑛𝑛/2) , 𝑛𝑛 > 1
�
Solusinya adalah T(n)= O(log n). Jadi waktu eksekusi Bitonic Sorter(n) = O(log n). Bitonic
Sorter sudah mampu mengurutkan, namun masukannya berupa bitonic sequence. Diinginkan
sebuah sorting network yang mampu mengurutkan sembarang data. Tahap berikutnya dari
pembuatan sorting network tersebut adalah membentuk network yang mampu
menggabungkan dua sequence berukuran n/2 yang sudah terurut menaik, menjadi sebuah
sequence berukuran n yang terurut menaik. Ini disebut merging network, dapat dilihat pada
Universitas Sumatera Utara
Gambar 2.8. Merging network berukuran n dapat dibentuk dengan memodifikasi half-cleaner
pertama dari Bitonic Sorter(n). Waktu eksekusinya juga O(log n).
b1
b2
b3
b4
b5
b6
b7
b8
a1
a2
a3
a4
a5
a6
a7
a8
BITONIC SORTER (n/2)
BITONIC SORTER (n/2)
Gambar 2.8. Merging Network
MERGER(a, start, n) /*asumsi n genap*/
for i ← 1 to n/2 in parallel do
COMPARATOR (a[start+i-1], a[start+n-i])
if n>2 then
for i ← 0 to 1 in parallel do
BITONIC-SORTER(a, start+i*n/2, n/2)
Akhirnya dengan menggabungkan merging network, didapat sebuah sorting network
yang dapat mengurutkan sembarang sequence berukuran n (SORTER(n)), dapat dilihat pada
Gambar 2.9.
SORTER(a, start, n) /*asumsi n genap*/
if n>2 then
for i ← 0 to 1 in parallel do
SORTER(a, start+i*n/2, n/2)
MERGER(a, start, n)
Universitas Sumatera Utara
Waktu eksekusi Bitonic-Sort adalah:
T(n) = �0 , 𝑛𝑛 = 1 𝑂𝑂(log𝑛𝑛) + 𝑇𝑇(𝑛𝑛/2) , 𝑛𝑛 > 1
�
Solusinya adalah O(log2n).
b1
b2
b3
b4
b5
b6
b7
b8
a1
a2
a3
a4
a5
a6
a7
a8
BITONIC SORTER (n/2)
BITONIC SORTER (n/2)
MERGER (n)
Gambar 2.9. Bitonic-Sorter
2.5.1. Contoh dan Proses Algoritma Bitonic Sort
Untuk mengilustrasikan deskripsi dan cara kerja dari algoritma Bitonic Sort ini, akan
digunakan contoh berikut, dapat dilihat pada Gambar 2.10:
List belum terurut : M A R I A T Y H
Kode ASCII : M = 77, A= 65, R= 82, I= 73, A= 65, T= 84, Y= 89, H= 72
77 65 82 73 65 84 89 72
77 65 82 73 65 84 89 72
Swap 77 dan 65
Swap 82 dan 73
Swap 65 dan 84
Swap 89 dan
72 65 77 82 73 65 84 89 72
Swap 65 dan 82
Swap 65 dan 89
Swap 77 dan 73
Swap 84 dan 72
Universitas Sumatera Utara
65 73 82 77 89 84 65 72
Swap 65 dan 73
Swap 82 dan 77
Swap 89 dan 84
Swap 65 dan
72 65 73 77 82 89 84 72 65
Swap 65 dan 89
Swap 73 dan 84
Swap 77 dan 72
Swap 82 dan 65
65 73 72 65 89 84 77 82
Swap 65 dan 72
Swap 89 dan 77
Swap 73 dan 65
Swap 84 dan 82
65 65 72 73 77 82 89 84
Swap 65 dan 65
Swap 72 dan 73
Swap 77 dan 82
Swap 89 dan
84 65 65 72 73 77 82 84 89
List terurut
65 65 72 73 77 82 84 89
Gambar 2.10. Proses Algoritma Bitonic Sort
2.6. Algoritma Odd-Even Sort
Algoritma Odd-even(transposition) sort adalah suatu algoritma paralel sorting yang
merupakan pengembangan dari algoritma sekuensial “bubble sort”, dimana algoritma odd-
even(transposition) ini didesain khusus untuk model jaringan komputer array linier
(homogen). Untuk n elemen data, kompleksitas waktu dari algoritma bubble sort pada
prosesor tunggal adalah O(n2), sedangkan pada odd-even(transposition) yang bekerja di atas
n prosesor adalah ϴ(n). Nampak peningkatan kecepatan waktu pada kinerja algoritma paralel
ini sebesar n kali dibanding algoritma sekuensialnya (Ernastuti et al. 2010).
Universitas Sumatera Utara
Odd-even(transposition) beroperasi pada dua fase alternatif, yaitu fase genap(even) dan
fase ganjil(odd). Pada fase genap, proses bernomor genap menukarkan bilangannya dengan
tetangga sebelah kanannya. Begitu pula, pada fase ganjil, proses bernomor ganjil
menukarkan bilangannya dengan tetangga sebelah kanannya.
2.6.1. Contoh dan Proses Algoritma Odd-Even Sort
Untuk mengilustrasikan deskripsi dan cara kerja dari algoritma Odd-Even Sort ini, akan
digunakan contoh pada Gambar 2.11:
List belum terurut : M A R I A T Y H
Kode ASCII : M = 77, A= 65, R= 82, I= 73, A= 65, T= 84, Y= 89, H= 72
Fase P1 P2 P3 P4 P5 P6 P7 P8 77 65 82 73 65 84 89 72 1 65 77 73 82 65 84 72 89 2 65 73 77 65 82 72 84 89 1 65 73 65 77 72 82 84 89 2 65 65 73 72 77 82 82 89 1 65 65 72 73 77 82 82 89 2 65 65 72 73 77 82 82 89 Gambar 2.11. Proses Algoritma Odd-Even Sort
Ket: Untuk data yang berwarna biru tebal, data yang telah terurut secara ascending. Fase
1 : fase ganjil (odd), fase 2 : fase genap (even).
2.7. Algoritma Comb Sort
Algoritma Comb Sort merupakan algoritma yang relatif sederhana. Awalnya dirancang oleh
Wlodzimierz Dobosiewicz pada tahun 1980. Kemudian ditemukan kembali oleh Syephen
Lacey dan Richard Box pada tahun 1991. Comb Sort merupakan varian dari bubble sort. Ide
awal membentuk algoritma ini adalah untuk menghilangkan nilai kecil yang berada di dekat
akhir list, yang membuat bubble sort begitu lambat. Nilai besar yang berada di awal list,
tidak menjadi masalah dalam bubble sort. Pada algoritma comb sort terdapat shrink factor
Universitas Sumatera Utara
yang memberikan efek yang sangat bagus pada efisensi comb sort. Shrink factor berfungsi
untuk menentukan ukuran gap. Shrink factor biasanya bernilai 1.24. Gap merupakan jarak
antara dua elemen yang akan dibandingkan. Pembulatan nilai gap adalah ke bawah (floor).
2.7.1. Contoh dan Proses Kerja Algoritma Comb Sort
1. Mulai dengan ukuran gap yang sama dengan jumlah data (n).
2. Hitung ukuran gap dengan melakukan pembagian ukuran gap sebelumnya dengan
shrink factor (lakukan pembulatan ke bawah (floor) pada hasil pembagian).
3. Iterasi pada list, lakukan swap pada elemen-elemen.
4. Jika gap bernilai 1 dan tidak ada swap selama iterasi, maka list telah terurut.
Untuk mengilustrasikan deskripsi dan cara kerja dari algoritma Comb Sort ini, akan
digunakan contoh berikut:
List belum terurut : M A R I A T Y H
Kode ASCII : M = 77, A= 65, R= 82, I= 73, A= 65, T= 84, Y= 89, H= 72
77 65 82 73 65 84 89 72
N = 8.
Shrink factor = 1.24.
Iterasi 1, gap 8 / 1.24 = 6.45
Jarak elemen yang akan diswap adalah 6, dapat dilihat pada Gambar 2.12.
Gambar 2.12. Iterasi 1 Algoritma Comb Sort.
Iterasi 2, gap 6 / 1.24 = 4.83.
Jarak elemen yang akan diswap adalah 4, dapat dilihat pada Gambar 2.13.
77 65 82 73 65 84 89 72
Swap 77 dan 89 77 65 82 73 65 84 89 72
Swap 65 dan 72 77 65 82 73 65 84 89 72
77 65 82 73 65 84 89 72 Swap 77 dan 65 65 65 82 73 77 84 89 72 Swap 65 dan 84
Universitas Sumatera Utara
Gambar 2.13. Iterasi 2 Algoritma Comb Sort Iterasi 3, gap 4 / 1.24 = 3.22
Jarak elemen yang akan diswap adalah 3, dapat dilihat pada Gambar 2.14.
Gambar 2.14. Iterasi 3 Algoritma Comb Sort
Iterasi 4, gap 3 / 1.24 = 2.41
Jarak elemen yang akan diswap adalah 2, dapat dilihat pada Gambar 2.15.
65 65 82 73 77 84 89 72 Swap 82 dan 89 65 65 82 73 77 84 89 72 Swap 73 dan 72 65 65 82 72 77 84 89 73
65 65 82 72 77 84 89 73 Swap 65 dan 72 65 65 82 72 77 84 89 73 Swap 65 dan 77 65 65 82 72 77 84 89 73 Swap 82 dan 84 65 65 82 72 77 84 89 73 Swap 73 dan 89 65 65 82 72 77 84 89 73 Swap 77 dan 73 65 65 82 72 73 84 89 77
65 65 82 72 73 84 89 77 Swap 65 dan 82 65 65 82 72 73 84 89 77 Swap 65 dan 72 65 65 82 72 73 84 89 77 Swap 82 dan 73 65 65 73 72 82 84 89 77
Universitas Sumatera Utara
Gambar 2.15. Iterasi 4 Algoritma Comb Sort Iterasi 5, gap 2 / 1.24 = 1.61
Jarak elemen yang akan diswap adalah 1, dapat dilihat pada Gambar 2.16.
Gambar 2.16. Iterasi 5 Algoritma Comb Sort List terurut.
2.8. Tinjauan Penelitian yang Relevan
Berikut adalah penelitian yang membahas seputar algoritma sorting:
Swap 72 dan 84 65 65 73 72 82 84 89 77 Swap 82 dan 89 65 65 73 72 82 84 89 77 Swap 84 dan 77 65 65 73 72 82 77 89 84
65 65 73 72 82 77 89 84 Swap 65 dan 65 65 65 73 72 82 77 89 84 Swap 65 dan 73 65 65 73 72 82 77 89 84 Swap 73 dan 72 65 65 72 73 82 77 89 84 Swap 73 dan 82 65 65 72 73 82 77 89 84 Swap 82 dan 77 65 65 72 73 77 82 89 84 Swap 82 dan 89 65 65 72 73 77 82 89 84 Swap 89 dan 84 65 65 72 73 77 82 84 89
65 65 72 73 77 82 84 89
Universitas Sumatera Utara
1. Rahayuningsih (2016) melakukan penelitian analisis perbandingan kompleksitas
algoritma pengurutan nilai (sorting) dengan menggunakan algoritma Quick sort, Shell
sort, Insertion sort, Selection sort dan Bubble sort.
Hasilnya adalah Quick sort merupakan algoritma mengurutkan dengan sangat cepat,
namun algoritma ini sangat kompleks dan diproses secara rekursif. Meskipun begitu,
Quick sort tidak selalu menjadi pilihan terbaik. Hal ini dikarenakan algoritma ini
melakukan rekursif yang berarti jika dilakukan untuk pengurutan data yang banyak,
walaupun cepat tetapi menghabiskan banyak memori. Beda halnya dengan algoritma
Shell sort, Insertion sort, Selection sort yang menjadi pilihan yang baik dan efisien untuk
mengurutkan nilai dalam suatu array yang berukuran sedang. Dengan interval data antara
100-1000 elemen.
2. Murtado dan Harsamuda (2014) yang melakukan penelitian perbandingan metode-
metode pengurutan data yang disajikan dalam bentuk grafik. Metode-metode yang
digunakan sebagai perbandingan adalah Bubble sort, Bucket sort, Comb sort, Pigeon
Hole sort. Hasil penelitian tersebut adalah algoritma Bubble sort memiliki waktu yang
lebih lama dalam mengurutkan 20 data dibandingkan dengan algoritma Bucket sort.
Untuk algoritma Comb sort dan Pigeon Hole sort memerlukan waktu yang sama untuk
mengurutkan 20 data secara ascending.
3. Sonita dan Nurtaneo (2015) melakukan penelitian analisis perbandingan proses
pengurutan kombinasi angka dan huruf dengan menggunakan algoritma Bubble sort,
Quick sort dan Merge sort. Hasil yang didapatkan adalah Algoritma Quick sort memiliki
waktu tercepat dalam melakukan proses pengurutan dibandingkan dengan Algoritma
Bubble sort dan Merge sort. Untuk algoritma yang memiliki waktu terlama dalam
melakukan proses pengurutan adalah Bubble sort.
4. Ernastuti et al (2010) melakukan penelitian terhadap model jaringan nonlinier dengan
menggunakan algoritma paralel Odd-Even Transposition. Hasil dari penelitian tersebut
adalah algoritma Odd-Even Transposition dapat dijalankan pada model jaringan
komputer kluster nonlinier hypercube, Fibonacci cube dan extended Lucas cube dengan
kompleksitas waktu O(n). Kompleksitas sorting n elemen pada jaringan non linier
hypercube (Q(k)) dengan n= 2k prosesor menggunakan algoritma Odd-Even
Transposition sort adalah O(n). Untuk k > 2 dan n= 2k, kompleksitas pada jaringan
Universitas Sumatera Utara
nonlinier Fibonacci cube (FC(k)) adalah O(n). Untuk k > 4 dan n= 2k, kompleksitas pada
jaringan nonlinier extended Lucas cube (ELC(k)) adalah O(n).
Universitas Sumatera Utara
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini akan dibahas mengenai beberapa analisis sitem dan perancangan sistem aplikasi.
Analisis sistem akan menganalisis pengurutan data bertipe char dan string menggunakan
algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort. Pada perancangan sistem aplikasi
yang akan dibaha adalah mengenai flowchart sistem dan flowchart menu serta perancangan
antarmuka (interface).
3.1. Analisis Sistem
Analisis sistem bertujuan untuk mengindentifikasi masalah yang akan diselesaikan,
kebutuhan fungsional dan non fungsional yang dibutuhkan oleh sistem. Hal ini dilakukan
agar pada saat perancangan aplikasi tidak terjadi kesalahan yang berarti, sehingga sistem
yang dirancang dapat berjalan dengan baik, tepat guna dan ketahanan dari sistem tersebut
akan lebih terjaga serta selesai pada waktu yang telah ditentukan. Ada dua tahapan analisis
dalam perancangan sistem ini yaitu analisis masalah dan analisis kebutuhan.
3.1.1. Analisis Masalah
Adapun masalah yang diangkat dalam penelitian ini adalah bagaimana menganalisis
kompleksitas waktu menggunakan algoritma Bitonic sort, Odd-Even sort dan Comb sort.
Untuk mengidentifikasi semua penyebab yang berhubungan dengan suatu permasalahan
digunakan Diagram Ishikawa (Fish Bone) dapat dilihat pada Gambar 3.1.
Material
Pengurutan biasanya dilakukan di kertas
Pengurutan masih dilakukan pada data bertipe integer
Metode
Belum adanya perbandingan kinerja algoritma bitonic, odd-even dan comb sort
ManusiaManusia MesinMesin
mengetahui perbedaan running time algoritma bitonic, odd-even dan comb
Menganalisis kompleksitas waktu terhadap pengurutan data bertipe char dan string dengan menggunakan algoritma Bitonic sort, Odd-Even sort dan Comb sort
Pengurutan masih dilakukan secara manual dan membutuhkan waktu yang lama
Gambar 3.1. Diagram Ishikawa
Universitas Sumatera Utara
3.1.2. Analisis Kebutuhan
Untuk membangun sebuah sistem, perlu dilakukan tahap analisis kebutuhan. Analisis
kebutuhan terdiri dari dua bagian yaitu kebutuhan fungsional dan kebutuhan
nonfungsional.
3.1.2.1. Analisis Kebutuhan Fungsional
Kebutuhan fungsional menggambarkan aktivitas dan layanan yang sistem berikan.
Kebutuhan fungsional dalam melakukan pengurutan data adalah:
1. Sistem harus mampu mengurutkan data acak bertipe char dan string.
2. Sistem harus mampu mengurutkan secara ascending (menaik) dan descending
(menurun).
3. Sistem harus mampu membuat banyak sampel sesuai dengan inputan user.
4. Sistem harus mampu menghitung running time algoritma Bitonic sort, Odd-
Even sort dan Comb sort.
5. Sistem harus mampu menampilkan perbandingan waktu pengurutan
menggunakan algoritma Bitonic sort, Odd-Even sort dan Comb sort dalam
grafik.
6. Sistem harus mampu mengklasifikasikan dan membaca isi file bertipe txt.
3.1.2.2. Analisis Kebutuhan Nonfungsional
Kebutuhan non-fungsional yang dibutuhkan dan digunakan dalam membangun
sistem ini adalah:
1. Performa
Sistem yang akan dibangun harus dapat menampilkan hasil pengurutan yang
sesuai dengan input yang dimasukkan oleh pengguna.
2. Interface
Sistem yang akan dibangun harus memiliki antarmuka yang user friendly,
artinya sistem ini mudah digunakan dan mudah dimengerti oleh pengguna.
3. Hemat biaya
Sistem yang dibangun tidak membutuhkan perangkat tambahan ataupun
perangkat pendukung lainnya yang dapat menambah biaya.
Universitas Sumatera Utara
4. Kontrol
Sistem yang dibangun harus dapat menampilkan pesan error untuk setiap
masukkan yang tidak sesuai.
5. Manajemen kualitas
Sistem yang akan dibangun harus memiliki kualitas yang baik yaitu tidak
mempersulit pengguna dalam melakukan pengurutan data.
3.1.3. Pemodelan Sistem
Pemodelan sistem bertujuam menggambarkan peran user terhadap sistem yang dibuat.
Pemodelan sistem yang digunakan dalam perancangan sistem yaitu use case diagram,
activity diagram dan sequence diagram.
3.1.3.1. Use Case Diagram
Use case diagram digunakan untuk merepresentasikan interaksi yang terjadi antara
user dengan sistem. Use case diagram menggambarkan interaksi tipikal antara
pengguna sistem dengan sistem itu sendiri, diberikan dalam sebuah narasi tentang
bagaimana sistem tersebut digunakan.Use case diagram dari sistem yang akan
dibangun dapat dilihat pada Gambar 3.2.
Gambar 3.2. Use Case Diagram
Universitas Sumatera Utara
Pada use case diagram di atas terdapat satu aktor yang berperan sebagai user. Untuk
menampilkan hasil perbandingan kompleksitas waktu dalam melakukan pengurutan
yang menggunakan algoritma Bitonic sort, Odd-Even sort dan Comb sort, user harus
memasukkan banyak karakter dan banyak sampel yang akan diurutkan pada use case
char sort. Selanjutnya user memilih generate data kemudian sistem akan
menampilkan hasil generate data yaitu data acak. Setelah sistem menampilkan data
acak, user menekan tombol sort yang kemudian sistem akan menampilkan data yang
telah terurut dan menampilkan running time dari algoritma Bitonic sort, Odd-Even
sort dan Comb sort. Setelah itu tekan tombol analyze maka sistem akan
menampilkan hasil perbandingan kompleksitas waktu dari ketiga algoritma tersebut
dalam bentuk grafik. User dapat menyimpan grafik perbandingan ataupun
memprintnya dengan menekan tombol print atau tombol save. Dokumentasi naratif
use case Char Sort dapat dilihat pada Tabel 3.1
Tabel 3.1. Dokumentasi Naratif Use Case Char Sort
Nama Use Case Char Sort
Actor User (Pengguna)
Deskripsi Use case ini mendeskripsikan pengurutan data bertipe char.
Basic Flow User menginputkan berupa angka (integer) , memilih untuk tipe
karakter dan banyak sampel.
Alternate Flow -
Pre-Condition Aplikasi menampilkan halaman generate dan siap menerima
inputan.
Typical course of
Event
Kegiatan User Respon Sistem
1. Menekan tombol Generate
Data.
2. Menekan tombol Sort.
3. Menekan tombol See Result
Bitonic Sort.
4. Menekan tombol See Result
1. Sistem menampilkan data
acak.
2. Sistem akan melakukan
proses pengurutan data
bertipe char dengan
menggunakan algoritma
Universitas Sumatera Utara
Odd-Even Sort.
5. Menekan tombol See Result
Comb Sort.
6. Menekan tombol Analyze.
7. Menekan tombol Print.
8. Menekan tombol Save.
Bitonic sort, Odd-Even sort
dan Comb sort.
3. Sistem menampilkan hasil
data terurut, waktu
pengurutan setiap sampel
dan rata-rata waktu
pengurutan dengan
menggunakan algoritma
Bitonic sort.
4. Sistem menampilkan hasil
data terurut, waktu
pengurutan setiap sampel
dan rata-rata waktu
pengurutan dengan
menggunakan algoritma
Odd-Even sort.
5. Sistem menampilkan hasil
data terurut, waktu
pengurutan setiap sampel
dan rata-rata waktu
pengurutan dengan
menggunakan algoritma
Comb sort.
6. Sistem menampilkan grafik
perbandingan waktu
algoritma Bitonic sort, Odd-
Even sort dan Comb sort.
7. Sistem menampilkan dialog
print.
8. Sistem menyimpan grafik
perbandingan ke dalam file
Universitas Sumatera Utara
bertipe pdf.
Pasca Kondisi User mendapatkan hasil perbandingan running time algoritma
Bitonic sort, Odd-Even sort dan Comb sort dalam bentuk grafik.
Pada use case Gambar 3.1, terdapat use case word Sort yang di dalamnya terdapat
use case Open File, Sort, Analyze, Save dan Print. Untuk penjelasannya dapat dilihat
pada Tabel 3.2.
Tabel 3.2. Dokumentasi Naratif Use Case Word Sort
Nama Use Case Word Sort
Actor User (Pengguna)
Deskripsi Use case ini mendeskripsikan pengurutan data bertipe string
yang disimpan dalam sebuah file bertipe txt.
Basic Flow User menginputkan file yang bertipe txt
Alternate Flow -
Pre-Condition Aplikasi siap menerima inputan
Typical course of
Event
Kegiatan User Respon Sistem
1. Menekan tombol Open
File.
2. Menekan tombol Sort.
3. Menekan tombol Analyze.
4. Menekan tombol Print.
5. Menekan tombol Save.
1. Sistem menampilkan dialog
untuk memilih file yang
bertipe txt, pilih ok, maka
sistem akan menampilkan
isi file dalam textbox.
2. Sistem akan melakukan
proses pengurutan data
bertipe string dengan
menggunakan algoritma
Universitas Sumatera Utara
Bitonic sort, Odd-Even sort
dan Comb sort dan
menampilkan hasil
pengurutan dan waktu
pengurutan.
3. Sistem menampilkan grafik
perbandingan waktu
algoritma Bitonic sort,
Odd-Even sort dan Comb
sort.
4. Sistem menampilkan dialog
print.
5. Sistem menyimpan grafik
perbandingan ke dalam file
bertipe pdf.
Pasca Kondisi User mendapatkan hasil perbandingan running time algoritma
Bitonic sort, Odd-Even sort dan Comb sort dalam bentuk grafik.
Selain use case Char Sort dan Word Sort, terdapat use case About dan use case Exit.
Dokumentasi naratif use case About dapat dilihat pada Tabel 3.3. Untuk dokumentasi
naratif use case Exit dapat dilihat pada Tabel 3.4.
Tabel 3.3. Dokumentasi Naratif Use Case About
Nama Use Case About
Actor User (Pengguna)
Deskripsi Use case ini menampilkan keterangan dan informasi tentang
pembuat sistem.
Basic Flow User ingin melihat informasi pembuat sistem.
Alternate Flow -
Pre-Condition Aplikasi siap menampilkan penjelasan.
Typical course of Kegiatan User Respon Sistem
Universitas Sumatera Utara
Event 1. Memilih menu About.
1. Menampilkan informasi
tentang pembuat sistem.
Pasca Kondisi User mendapatkan informasi hak cipta sistem.
Tabel 3.4. Dokumentasi Naratif Use Case Exit
Nama Use Case Exit
Actor User (Pengguna)
Deskripsi Use case ini untuk menutup sistem aplikasi.
Basic Flow User ingin keluar dari sistem.
Alternate Flow -
Pre-Condition Aplikasi siap menampilkan menu exit.
Typical course of
Event
Kegiatan User Respon Sistem
1. Memilih menu Exit.
1. Sistem tertutup.
Pasca Kondisi User keluar dari aplikasi.
3.1.3.2. Activity Diagram
Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang
dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi
dan bagaimana berakhir. Activity diagram pada sistem yang akan dibangun terdapat 4
(empat) activity utama yaitu:
1. Char Sort
2. Word Sort
3. About
4. Exit
Pada Gambar 3.3 dijelaskan rancangan aktivitas user dan respon sistem pada
aplikasi.
Universitas Sumatera Utara
Gambar 3.3. Activity Diagram
Universitas Sumatera Utara
Berdasarkan activity diagram tersebut maka rancangan aktivitas sistem dapat
dijelaskan pada Tabel 3.5.
Tabel 3.5. Dokumentasi Naratif Activity Diagram
Nama Activity Diagram Activity Diagram System
Actor User (Pengguna)
Deskripsi Diagram activity tersebut menjelaskan rancangan
aktivitas user dan respon sistem.
Pre-Condition Aplikasi menampilkan menu Char Sort, Word Sort,
About dan Exit
Aktivitas dan Respon Aktivitas User Respon Sistem
• User memilih menu
Char Sort.
1. User menginput total
karakter, memilih tipe
karakter dan memilih
jumlah sampel.
Kemudian user
menekan tombol
Generate Data.
2. User menekan tombol
Sort.
3. User menekan tombol
See Result Bitonic
Sort .
4. User menekan tombol
See Result Odd-Even
Sort.
5. User menekan tombol
See Result Comb Sort.
• Sistem menampilkan
halaman generate data.
1. Menampilkan data
acak.
2. Sistem melakukan
pengurutan data acak
dengan menggunakan
algoritma Bitonic Sort,
Odd-Even sort dan
Comb sort.
3. Menampilkan halaman
yang berisi data yang
telah terurut, waktu
pengurutan setiap
sampel dan rata-rata
waktu pengurutan
menggunakan
algoritma Bitonic Sort.
4. Menampilkan halaman
Universitas Sumatera Utara
6. User menekan tombol
Analyze.
7. User menekan tombol
Print.
8. User menekan tombol
Save.
• User memilih menu
Word Sort.
1. User menekan
tombol Open
File.
2. User menekan
tombol Sort.
3. User menekan
tombol Analyze.
4. User menekan
tombol Print.
5. User menekan
tombol Save.
• User memilih menu
About
• User memilih Exit
yang berisi data yang
telah terurut, waktu
pengurutan setiap
sampel dan rata-rata
waktu pengurutan
menggunakan
algoritma Odd-Even
Sort.
5. Menampilkan halaman
yang berisi data yang
telah terurut, waktu
pengurutan setiap
sampel dan rata-rata
waktu pengurutan
menggunakan
algoritma Comb Sort.
6. Menampilkan grafik
perbandingan waktu
pengurutan ketiga
algoritma.
7. Sistem menampilkan
dialog print.
8. Sistem menyimpan
grafik perbandingan ke
dalam file bertipe pdf.
• Sistem menampilkan
halaman sorting string.
1. Menampilkan isi file.
2. Sistem melakukan
pengurutan data acak
dengan menggunakan
Universitas Sumatera Utara
algoritma Bitonic sort,
Odd-Even sort dan
Comb sort dan
menampilkan hasil
pengurutan dan waktu
pengurutan.
3. Menampilkan grafik
perbandingan waktu
pengurutan ketiga
algoritma.
4. Sistem menampilkan
dialog print.
5. Sistem menyimpan
grafik perbandingan ke
dalam file bertipe pdf.
• Menampilkan halaman
about.
• Keluar aplikasi
Pasca Kondisi User mendapatkan hasil perbandingan running time
algoritma Bitonic sort, Odd-Even sort dan Comb sort
dalam bentuk grafik.
Pada activity diagram di atas dapat dijelaskan bahwa user dapat menginput banyak
karakter dan banyak sampel yang akan diurutkan. Lalu user dapat melihat hasil
perbandingan running time algoritma Bitonic sort, Odd-Even sort dan Comb sort
dalam melakukan pengurutan dengan jumlah karakter dan banyak sampel yang telah
ditentukan dalam bentuk grafik.
3.1.3.3. Sequence Diagram
Sequence diagram adalah diagram yang menunjukkan interaksi antar objek di dalam
sistem yang disusun pada sebuah urutan atau rangkaian waktu. Interaksi antar objek
Universitas Sumatera Utara
tersebut adalah pengguna, display dan pesan. Pada Gambar 3.4 menggambarkan
perilaku user terhadap sistem.
Gambar 3.4. Sequence Diagram
Universitas Sumatera Utara
3.2. Flowchart Sistem
Flowchart atau bagan alir adalah bagan (chart) yang menunjukkan alir (flow) di dalam
program dan prosedur sistem secara logika. Flowchart merupakan gambar atau bagan yang
memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Dengan demikian
setiap simbol menggambarkan proses tertentu, sedangkan antara proses digambarkan dengan
garis penghubung. Pada sistem ini terdapat 2 (dua) flowchart yaitu flowchart pengurutan data
bertipe char (char sort) dapat dilihat pada Gambar 3.5 dan flowchart pengurutan data
bertipe string (string sort) dapat dilihat pada Gambar 3.6.
MULAI
Jumlah Karakter
Jumlah sampel
Generate Random Sample Data
Hasil pengurutan dan waktu pengurutan
Generate Grafik
SELESAI
Algoritma Bitonic Sort, Algoritma Odd-Even sort, Algoritma Comb Sort
Tipe Karakter
Grafik perbandingan
Gambar 3.5. Flowchart Char Sort Gambar 3.5 menggambarkan aliran proses pada pengurutan data bertipe karakter (char
sort). Proses diawali dengan menginput banyak karakter yang akan diurutkan, memilih
banyak sampel dan memilih tipe karakter yang akan diurutkan (terdapat empat tipe yaitu :
numeric, alphabet, alphanumeric, alphanumeric dan simbol). Setelah itu masuk ke
proses pembangkitan data (generate data) sesuai dengan inputan. Setelah data berhasil
dibangkitkan, proses pengurutan menggunakan algoritma bitonic sort, odd-even sort dan
comb sort dapat dilakukan. Sistem akan menampilkan hasil pengurutan dan waktu yang
Universitas Sumatera Utara
dibutuhkan untuk pengurutan dan waktu pengurutan dapat ditampilkan dalam grafik
dalam proses generate grafik yang dapat dijadikan sebagai bahan perbandingan.
MULAI
Baca isi file
Input file bertipe txt
Hasil Pengurutan dan waktu pengurutan
Generate Grafik
SELESAI
Algoritma Bitonic Sort, Algoritma Odd-Even sort, Algoritma Comb Sort
Grafik perbandingan
Gambar 3.6. Flowchart String Sort Gambar 3.6 menggambarkan aliran proses pada pengurutan data bertipe string (string
sort). Proses diawali dengan menginput file bertipe txt yang berisikan string yang akan
diurutkan. Kemudian sistem akan membaca isi file dan menampilkannya. Setelah sistem
berhasil membaca dan menampilkan isi file, maka proses pengurutan string menggunakan
algoritma bitonic sort, odd-even sort dan comb sort dapat dilakukan. Sistem akan
menampilkan hasil pengurutan dan waktu yang dibutuhkan untuk pengurutan. Waktu
pengurutan dapat ditampilkan dalam grafik dalam proses generate grafik yang dapat
dijadikan sebagai bahan perbandingan.
3.3. Pseudocode Program
3.3.1. Pseudocode Algoritma Bitonic Sort
COMPARATOR(x,y) //fungsi menukar nilai x dan y jika x lebih besar dari y
if x > y then // jika nilai x lebih besar dari y maka
temp ← x //temp menampung nilai x
x ← y // x menampung nilai y
y ← temp // y menampung nilai temp
Universitas Sumatera Utara
HALF-CLEANER (a, start, n) //fungsi untuk melakukan divide
for i ← start to start + n/2-1 in parallel do // perulangan dimulai dari 0 sampai n/2
COMPARATOR (a[i], a[ i+n/2]) // memanggil fungi COMPARATOR
BITONIC-SORTER(a, start, n) /*asumsi n genap*/
HALF-CLEANER(a, start, n) // memanggil fungsi HALF-CLEANER
if n > 2 then // jika n lebih besar dari 2
for i ← 0 to 1 in parallel do // perulangan dimulai dari 0 sampai 1
BITONIC-SORTER (a, start + i*n/2, n/2) //rekursif
MERGER(a, start, n) /*asumsi n genap*/ // fugsi untuk menyatukan data yang didivide
for i ← 1 to n/2 in parallel do //perulangan dimulai dari 1 sampai n/2
COMPARATOR (a[start+i-1], a[start+n-i]) //memanggil fungsi COMPARATOR
if n>2 then //jika n lebih besar dari 2
for i ← 0 to 1 in parallel do // perulangan dimulai dari 0 sampai ke 1
BITONIC-SORTER(a, start+i*n/2, n/2) //memanggil fungsi BITONIC-
SORTER
SORTER(a, start, n) /*asumsi n genap*/ //fungsi untuk melakukan penyatuan data terurut
if n>2 then // jika n lebih besar dari 2
for i ← 0 to 1 in parallel do //perulangan dimulai dari 0 sampai ke 1
SORTER(a, start+i*n/2, n/2) //rekursif
MERGER(a, start, n) // memanggil fungsi MERGER
3.3.2. Pseudocode Algoritma Odd-Even Sort
for (i = 0 ; i < n ; i++) // perulangan dilakukan sebanyak data yang akan diurutkan { if (i %2 = 1) // jika i adalah bilangan ganjil { for (int j = 2 ; j < n ; j += 2) // perulangan dimulai dari 2 sampai ke n { if (a[j] < a[j-1]) // jika nilai di index j lebih kecil daripada nilai di index j-1 swap (a[j-1], a[j]) ; //menukar nilai di index j ke index j-1
} } else {
for (int j = 1 ; j < n ; j += 2) //perulangan dimulai dari 1 sampai ke n {
Universitas Sumatera Utara
if (a[j] < a[j-1]) //jika nilai di index j lebih kecil daripada nilai di index j-1
swap (a[j-1], a[j]) ; //menukar nilai di index j ke index j-1 }
} }
3.3.3. Pseudocode Algoritma Comb Sort
do { //awal perulangan swapped = false ; // swapped bernilai false
gap= newGap(gap); // memanggil fungsi newGap untuk menentukan jarak nilai yang akan dibandingkan
for (int i = 0 ; i < len – gap ; i ++) //perulangan dimulai dari 0 sampai len-gap {
if(a[i] > a[i+gap]) //jika nilai di index a[i] lebih besar dari nilai di index [i+gap]
{ swapped = true; //swapped bernilai true swap(a[i], a[i+gap]); //menukarkan nilai di index a[i+gap] ke a[i] } }
}while (gap > 1 || swapped); // perulangan dilakukan ketika gap bernilai lebih besar dari 1 atau swapped bernilai false
3.4. Perancangan Sistem
3.4.1. Rancangan halaman menu utama
Halaman menu utama merupakan halaman yang pertama kali tampil pada saat aplikasi
dijalankan. Pada halaman ini terdapat satu label dan empat tombol. Rancangan halaman
menu utama dapat dilihat pada Gambar 3.7. Pada halaman menu utama terdapat 4
(empat) menu utama yang berupa tombol yaitu Char Sort merupakan menu yang akan
menampilkan halaman Character Sorting, Word Sort merupakan menu yang akan
menampilkan halaman Word Sorting, About merupakan menu yang akan menampilkan
halaman About dan Exit merupakan menu untuk keluar dari aplikasi.
Universitas Sumatera Utara
APLIKASI PERBANDINGAN KINERJA ALGORITMA BITONIC SORT, ODD-EVEN SORT DAN COMB SORT
CHAR SORT
WORD SORT
ABOUT
EXIT
1
2
3
4
5
Gambar 3.7. Rancangan halaman menu utama
Untuk keterangan gambar 3.7 dapat dilihat pada Tabel 3.6.
Tabel 3.6. Keterangan halaman menu utama
No Jenis Objek Keterangan 1 Label Judul 2 Button Membuka halaman Character Sorting 3 Button Membuka halaman Word String 4 Button Membuka halaman About 5 Button Keluar dari aplikasi
3.4.2. Rancangan halaman Character Sorting
Halaman character sorting tampil setelah user menekan tombol char sort pada halaman
menu utama. Rancangan halaman character sorting dapat dilihat pada Gambar 3.8.
Character Sorting
TOTAL CHARACTER
TYPE CHAR
TOTAL SAMPEL
BITONIC SORT
ODD-EVEN SORT
COMB SORT
ANALYZE
SEE RESULT
SEE RESULT
SEE RESULT
SORT
0%
0%
0%
1
5
6
7
8
15
16
17
18
19
12
13
14
9
10
11
2
3
4
Gambar 3.8. Rancangan Halaman Character Sorting
Universitas Sumatera Utara
Untuk keterangan gambar 3.8 dapat dilihat pada Tabel 3.7
Tabel 3.7. Keterangan halaman Character Sorting
No Jenis Objek Keterangan 1 Label Judul halaman (Character Sorting) 2 Label - 3 Label - 4 Label - 5 Text Box Untuk menerima inputan total character yang akan diurutkan
dari user. 6 Combo Box Untuk memilih tipe karakter yang akan diurutkan (Number
Only, Alphabet Only, Alphanumeric Only dan Alphanumeric + Symbol)
7 Combo Box Untuk memilih banyaknya sampel yang akan diurutkan (2-10) 8 Panel Panel ini berisi label, rich text box sesuai dengan banyaknya
sampel yang dipilih. Label dan rich text box ini akan muncul ketika user menekan tombol generate data.
9 Label - 10 Label - 11 Label - 12 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan
menggunakan algoritma bitonic sort. Progress bar akan aktif ketika menekan tombol sort.
13 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan menggunakan algoritma odd-even sort. Progress bar akan aktif ketika menekan tombol sort.
14 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan menggunakan algoritma comb sort. Progress bar akan aktif ketika menekan tombol sort.
15 Button Tombol sort untuk memulai proses pengurutan data bertipe char dengan menggunakan algoritma bitonic sort, odd-even sort dan comb sort. Tombol sort akan akan aktif ketika user menekan tombol generate data.
16 Button Tombol see result, untuk membuka halaman Result Bitonic Sort. Tombol ini aktif ketika user menekan tombol sort.
17 Button Tombol see result, untuk membuka halaman Result Odd-Even Sort. Tombol ini aktif ketika user menekan tombol sort.
18 Button Tombol see result, untuk membuka halaman Result Comb Sort. Tombol ini aktif ketika user menekan tombol sort.
19 Button Tombol analyze, untuk menampilkan halama Grafik Analyze.
Universitas Sumatera Utara
3.4.3. Rancangan Halaman Result
Halaman result tampil setelah user menekan tombol see result pada halaman character
sorting. Halaman result ada 3 yaitu Bitonic Sort Result, Odd-Even Sort Result dan Comb
Sort Result. Rancangan halaman Bitonic Sort Result dapat dilihat pada Gambar 3.9.
BITONIC SORT RESULT
TOTAL CHARACTER
TOTAL SAMPEL
AVERAGE TIME ms
1
2
3 4
5
6
7
8
9 10
Gambar 3.9. Rancangan Halaman Result Bitonic Sort Result
Keterangan gambar 3.9 dapat dilihat pada Tabel 3.8
Tabel 3.8. Keterangan Halaman Bitonic Sort Result
No Jenis Objek Keterangan 1 Label Judul halaman (Bitonic Sort Result) 2 Panel Panel ini berisikan label dan rich text box. Rich text box berisikan data
bertipe char yang telah terurut. Jumlah label dan rich text box sesuai dengan inputan total sampel.Label dan rich textbox muncul ketika user menekan tombol see result.
3 Panel Panel ini berisikan label dan rich text box. Rich text box berisikan data waktu yang dibutuhkan untuk melakukan pengurutan setiap sampel. Jumlah label dan rich text box sesuai dengan banyak sampel yang dipilih user. Label dan rich textbox muncul ketika user menekan tombol see result.
4 Label - 5 Label - 6 Label - 7 Text Box Menampilkan banyak karakter yang diurutkan per sampelnya. 8 Text Box Menampilkan banyak sampel. 9 Text Box Menampilkan rata-rata waktu yang dibutuhkan utuk mengurutkan data
Universitas Sumatera Utara
bertipe char dengan menggunakan algoritma bitonic sort. 10 Label -
Rancangan halaman Odd-Even Sort Result tidak jauh berbeda dengan halaman Bitonic
Sort Result. Rancangan halaman Odd-Even Sort Result dapat dilihat pada Gambar 3.10.
ODD-EVEN SORT RESULT
TOTAL CHARACTER
TOTAL SAMPEL
AVERAGE TIME ms
1
2
3 4
5
6
7
8
9 10
Gambar 3.10. Rancangan Halaman Odd-Even Sort Result
Keterangan gambar 3.10 dapat dilihat pada Tabel 3.9.
Tabel 3.9. Keterangan Halaman Odd-Even Sort Result
No Jenis Objek Keterangan 1 Label Judul halaman (Odd-Even Sort Result) 2 Panel Panel ini berisikan label dan text box. Rich text box berisikan data
bertipe char yang telah terurut. Jumlah label dan rich text box sesuai dengan inputan total sampel.Label dan rich textbox muncul ketika user menekan tombol see result.
3 Panel Panel ini berisikan label dan rich text box. Rich text box berisikan data waktu yang dibutuhkan untuk melakukan pengurutan setiap sampel. Jumlah label dan rich text box sesuai dengan banyak sampel yang dipilih user. Label dan rich textbox muncul ketika user menekan tombol see result.
4 Label - 5 Label - 6 Label - 7 Text Box Menampilkan banyak karakter yang diurutkan per sampelnya. 8 Text Box Menampilkan banyak sampel. 9 Text Box Menampilkan rata-rata waktu yang dibutuhkan utuk mengurutkan data
bertipe char dengan menggunakan algoritma odd-even sort.
Universitas Sumatera Utara
No Jenis Objek Keterangan 10 Label -
Rancangan halaman Comb Sort Result dapat dilihat pada Gambar 3.11.
COMB SORT RESULT
TOTAL CHARACTER
TOTAL SAMPEL
AVERAGE TIME ms
1
2
3 4
5
6
7
8
9 10
Gambar 3.11. Rancangan Halaman Comb Sort Result
Keterangan gambar 3.11 dapat dilihat pada Tabel 3.10
Tabel 3.10. Keterangan Halaman Comb Sort Result
No Jenis Objek Keterangan 1 Label Judul halaman (Comb Sor Result t) 2 Panel Panel ini berisikan label dan rich text box. Rich text box berisikan data
bertipe char yang telah terurut. Jumlah label dan rich text box sesuai dengan inputan total sampel.Label dan rich textbox muncul ketika user menekan tombol see result.
3 Panel Panel ini berisikan label dan text box. Rich text box berisikan data waktu yang dibutuhkan untuk melakukan pengurutan setiap sampel. Jumlah label dan rich text box sesuai dengan banyak sampel yang dipilih user. Label dan rich textbox muncul ketika user menekan tombol see result.
4 Label - 5 Label - 6 Label - 7 Text Box Menampilkan banyak karakter yang diurutkan per sampelnya. 8 Text Box Menampilkan banyak sampel.
Universitas Sumatera Utara
No Jenis Objek Keterangan 9 Text Box Menampilkan rata-rata waktu yang dibutuhkan utuk mengurutkan data
bertipe char dengan menggunakan algoritma comb sort. 10 Label -
3.4.4. Rancangan Halaman Char Sorting Analyze
Halaman char sorting analyze tampil setelah user menekan tombol analyze pada halaman
character sorting. Rancangan halaman char sorting analyze dapat dilihat pada Gambar
3.12.
GRAPHIC ANALYZE
BITONIC SORT
ODD-EVEN SORT
COMB SORT
WAKTU PENGURUTAN
KETERANGAN:
TOTAL CHARACTER
AVERAGE TIME
B
OD
C
ms
ms
ms
KESIMPULAN
16
2
1
65
3
7
4
9
8
10
11
12
13
14
15
Print Save
17 18
Gambar 3.12. Rancangan Halaman Char Sorting Analyze
Keterangan gambar 3.12 dapat dilihat pada Tabel 3.11.
Tabel 3.11. Keterangan Halaman Char Sorting Analyze
No Jenis Objek Keterangan 1 Label Judul halaman (Char Sorting Analyze) 2 Panel Panel ini berisikan grafik yang menunjukkan perbandingan waktu
pengurutan yang dilakukan dengan menggunakan algoritma bitonic sort, odd-even sort dan comb sort.
3 Label - 4 Label - 5 Text Box Menampilkan banyak karakter yang diurutkan
Universitas Sumatera Utara
No Jenis Objek Keterangan 6 Label - 7 Label - 8 Label - 9 Label - 10 Text Box Menampilkan rata-rata waktu yang dibutuhkan untuk mengurutkan
dengan menggunakan algoritma bitonic sort. 11 Text Box Menampilkan rata-rata waktu yang dibutuhkan untuk mengurutkan
dengan menggunakan algoritma odd-even sort. 12 Text Box Menampilkan rata-rata waktu yang dibutuhkan untuk mengurutkan
dengan menggunakan algoritma comb sort. 13 Label - 14 Label - 15 Label - 16 Label Menampilkan kesimpulan hasil perbandingan waktu pengurutan. 17 Button Tombol Print. Untuk mencetak grafik perbandingan. 18 Button Tombol Save. Menyimpan grafik perbandingan ke dalam file bertipe
pdf.
3.4.5. Rancangan Halaman Word Sorting
Halaman word sorting tampil setelah user menekan tombol word sort pada halaman
menu utama. Rancangan halaman word sorting dapat dilihat pada Gambar 3.13 .
WORD SORTING
Path: Open File
UNSORTED SORTEDBITONIC SORT
SORTEDODD-EVEN SORT
SORTEDCOMB SORT
TIME TIME TIMEms ms ms
BITONIC SORT
ODD-EVEN SORT
COMB SORT
0%
0%
0%
SORT ANALYZE
1
23
4
5
9
6 7 8
10 11 12
13
14 15
1617 18
19
20
21
22
23
24
25
26
27
28 29
Universitas Sumatera Utara
Gambar 3.13. Rancangan Halaman Word Sorting
Keterangan gambar 3.13 dapat dilihat pada Tabel 3.12.
Tabel 3.12. Keterangan Halaman Word Sorting
No Jenis Objek Keterangan 1 Label Judul halaman (Word Sorting) 2 Label - 3 Text Box Untuk menampilkan letak dan nama file yang dipilih. 4 Button Tombol open file, untuk membuka opendialog dan memilih file
yang berextension txt. 5 Label - 6 Label - 7 Label - 8 Label - 9 Text Box Menampilkan data yang belum terurut yang berasal dari file yang
dipilih oleh user. 10 Text Box Menampilkan data yang telah diurutkan dengan menggunakan
algoritma bitonic sort. 11 Text Box Menampilkan data yang telah diurutkan dengan menggunakan
algoritma odd-even sort. 12 Text Box Menampilkan data yang telah diurutkan dengan menggunakan
algoritma comb sort. 13 Label - 14 Text Box Menampilkan waktu pengurutan data dengan menggunakan
algoritma bitonic sort dalam satuan ms (milisecond) 15 Label - 16 Label - 17 Text Box Menampilkan waktu pengurutan data dengan menggunakan
algoritma odd-even sort dalam satuan ms (milisecond) 18 Label - 19 Label - 20 Text Box Menampilkan waktu pengurutan data dengan menggunakan
algoritma comb sort dalam satuan ms (milisecond) 21 Label - 22 Label - 23 Label - 24 Label - 25 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan
menggunakan algoritma bitonic sort. Progress bar akan aktif ketika menekan tombol sort.
26 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan menggunakan algoritma odd-even sort. Progress bar akan aktif ketika menekan tombol sort.
27 Progress Bar Untuk menampilkan kemajuan suatu proses pengurutan menggunakan algoritma comb sort. Progress bar akan aktif ketika
Universitas Sumatera Utara
No Jenis Objek Keterangan menekan tombol sort.
28 Button Tombol sort, untuk memulai melakukan penguruta data bertipe string dengan menggunakan algoritma bitonic sort, odd-even sort dan comb sort.
29 Button Tombol analyze, menampilkan halaman graphic analyze.
3.4.6. Rancangan Halaman String Sorting Analyze
Halaman string sorting analyze tampil setelah user menekan tombol analyze pada
halaman word sorting. Rancangan halaman string sorting analyze dapat dilihat pada
Gambar 3.14.
STRING SORTING ANALYZE
BITONIC SORT
ODD-EVEN SORT
COMB SORT
WAKTU PENGURUTAN
KETERANGAN:
TIME
B
OD
C
ms
ms
ms
KESIMPULAN
14
2
1
6
5
3
48
9
10
11
12
137
Print Save
15 16
Gambar 3.14. Rancangan Halaman String Sorting Analyze
Keterangan gambar 3.14 dapat dilihat pada Tabel 3.13.
Tabel 3.13. Keterangan Halaman String Sorting Analyze
No Jenis Objek Keterangan 1 Label Judul halaman (String Sorting Analyze) 2 Panel Panel ini berisikan grafik yang menunjukkan perbandingan waktu
pengurutan yang dilakukan dengan menggunakan algoritma bitonic
Universitas Sumatera Utara
No Jenis Objek Keterangan sort, odd-even sort dan comb sort.
3 Label - 4 Label - 5 Label - 6 Label - 7 Label - 8 Text Box Menampilkan waktu yang dibutuhkan untuk mengurutkan dengan
menggunakan algoritma bitonic sort. 9 Text Box Menampilkan waktu yang dibutuhkan untuk mengurutkan dengan
menggunakan algoritma odd-even sort. 10 Text Box Menampilkan waktu yang dibutuhkan untuk mengurutkan dengan
menggunakan algoritma comb sort. 11 Label - 12 Label - 13 Label - 14 Label Menampilkan kesimpulan hasil perbandingan waktu pengurutan. 15 Button Tombol Print. Untuk mencetak grafik perbandingan. 16 Button Tombol Save. Menyimpan grafik perbandingan ke dalam file bertipe
pdf.
3.4.7. Rancangan Halaman About
Halaman about tampil setelah user menekan tombol about pada halaman utama.
Rancangan halaman about dapat dilihat pada Gambar 3.15.
ABOUT1
23
Gambar 3.15. Rancangan Halaman About
Keterangan gambar 3.15 dapat dilihat pada Tabel 3.14.
Tabel 3.14. Keterangan Halaman About
No Jenis Objek Keterangan 1 Label Judul halaman (About) 2 Picture Box Menampilkan foto 3 Label Menampilkan biodata
Universitas Sumatera Utara
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1. Implementasi
Implementasi sistem merupakan penerapan hasil perancangan yang telah dibuat dari
penggabungan program menjadi suatu aplikasi. Pada tahapan implementasi ini aplikasi yang
telah dianalisis dan dirancang akan difungsikan, sehingga diketahui bagaimana kinerja
aplikasi ini. Aplikasi ini diimplementasikan dari perancangan dari bab sebelumnya. Aplikasi
ini dibangun dengan menggunakan bahasa pemrograman C# dan menggunakan software
Microsoft Visual Studio 2010 Ultimate.
Pada aplikasi ini terdapat 9 (sembilan) tampilan halaman, yaitu halaman menu utama,
halaman character sorting, halaman bitonic sort result, halaman odd-even sort result,
halaman comb sort result, halaman char sorting analyze, halaman word sorting, halaman
string sorting analyze dan halaman about.
4.2. Antarmuka Sistem
Setelah melewati tahap analisis perancangan antarmuka pengguna, rancangan digunakan
sebagai acuan untuk pengkodingan halaman-halaman pada perangkat lunak. Pada aplikasi
perbadingan kinerja algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort ini terdapat
beberapa halaman yaitu:
1. Halaman Menu Utama.
2. Halaman Character Sorting.
3. Halaman Bitonic Sort Result.
4. Halaman Odd-Even Sort Result.
5. Halaman Comb Sort Result.
6. Halaman Char Sorting Analyze.
7. Halaman Word Sorting.
8. Halaman String Sorting Analyze.
9. Halaman About
Universitas Sumatera Utara
4.2.1. Halaman Menu Utama
Halaman menu utama ini merupakan halaman yang pertama kali muncul ketika aplikasi
dijalankan. Tampilan halaman menu utama dapat dilihat pada Gambar 4.1.
Gambar 4.1. Halaman Menu Utama
4.2.2. Halaman Character Sorting
Halaman Character Sorting merupakan halaman yang muncul ketika user menekan
tombol Char Sort pada halaman Menu Utama. Pada halaman Character Sorting, user
harus memasukkan jumlah karakter yang akan diurutkan, total sampel, tipe karakter yang
akan diurutkan dan sort order. Untuk tipe karakter terdapat 4(empat) jenis yaitu numeric
(karakter angka), alphabet (karakter huruf), alphanumeric (karakter angka dan huruf) dan
alphanumeric dan symbol (karakter angka, huruf dan simbol). Setiap sampel berisikan
karakter yang berjumlah sesuai dengan yang dimasukkan oleh user pada textbox total
character. Tampilan halaman Character Sorting sebelum proses pengurutan dapat dilihat
pada Gambar 4.2 dan tampilan halaman Character Sorting setelah proses pengurutan
dapat dilihat pada Gambar 4.3.
Universitas Sumatera Utara
Gambar 4.2. Halaman Character Sorting sebelum proses sorting
Ketika user mengisi total karakter, tipe karaktr dan total sampel dan menekan tombol
Generate Data, maka panel akan menampilkan data acak sesuai dengan inputan user.
Total sampel yang dapat dipilih user minimal 2 (dua) dan maksimal 10 (sepuluh). Sampel
pertama hasil generate data merupakan sampel data terurut sedangkan sampel kedua
sampai dengan sepuluh merupakan sampel data acak. Hal ini dibuat untuk
membandingkan running time algoritma Bitonic sort, Odd-Even sort dan Comb sort
dalam melakukan pengurutan data terurut dan data acak.
Universitas Sumatera Utara
Gambar 4.3. Halaman Character Sorting setelah proses sorting
Ketika user menekan tombol start maka progress bar akan jalan. Setelah proses
pengurutan selesai tombol start disable (tidak dapat ditekan), tombol see result untuk
bitonic, odd-ven ,comb dan tombol analyze enable (dapat ditekan). Jika proses
pengurutan menggunakan ketiga algoritma tersebut belum selesai maka tombol analyze
tidak dapat ditekan.
4.2.3. Halaman Bitonic Sort Result
Halaman Bitonic Sort Result merupakan halaman yang muncul ketika user menekan
tombol see result pada halaman character sorting. Tampilan halaman Bitonic Sort Result
dapat dilihat pada Gambar 4.4. Pada halaman Bitonic Sort Result akan ditampilkan hasil
pengurutan karakter.
Universitas Sumatera Utara
Selain menampilkan hasil pengurutan, halaman ini juga menampilkan waktu yang
dibutuhkan untuk melakukan pengurutan tiap sampel dan rata-rata waktu.
Gambar 4.4. Halaman Bitonic Sort Result
4.2.4. Halaman Odd-Even Sort Result
Halaman Odd-Even Sort Result merupakan halaman yang akan muncul ketika user
menekan tombol see result pada halaman character sorting. Tampilan halaman Odd-Even
Sort Result dapat dilihat pada Gambar 4.5. Pada halaman Odd-Even Sort Result akan
ditampilkan hasil pengurutan karakter. Selain menampilkan hasil pengurutan, halaman ini
Universitas Sumatera Utara
juga menampilkan waktu yang dibutuhkan untuk melakukan pengurutan tiap sampel dan
rata-rata waktu.
Gambar 4.5. Halaman Odd-Even Sort Result
4.2.5. Halaman Comb Sort Result
Halaman Comb Sort Result merupakan halaman yang akan muncul ketika user menekan
tombol See Result pada halaman Character Sorting. Tampilan halaman Comb Sort Result
dapat dilihat pada Gambar 4.6. Pada halaman Comb Sort Result akan ditampilkan hasil
pengurutan karakter. Selain menampilkan hasil pengurutan, halaman ini juga
menampilkan waktu yang dibutuhkan untuk melakukan pengurutan tiap sampel dan rata-
rata waktu.
Universitas Sumatera Utara
Gambar 4.6. Halaman Comb Sort Result
4.2.6. Halaman Char Sorting Analyze
Halaman Char Sorting Analyze merupakan halaman yang tampil ketika user menekan
tombol analyze pada halaman character sorting. Pada halaman ini terdapat 2(dua) grafik.
Grafik pertama merupakan grafik perbandingan waktu pengurutan pada data bertipe char
yang terurut (Sorted Sample Data) sedangkan grafik kedua merupakan grafik
perbandingan rata-rata waktu pengurutan pada data acak yang bertipe char (Random
Sample Data).Tampilan halaman char sorting analyze dapat dilihat pada Gambar 4.6.
Pada halaman char sorting analyze terdapat tombol lambang print yang berfungsi untuk
mencetak grafik perbandingan, dapat dilihat pada Gambar 4.7. Selain itu terdapat juga
tombol lambang pdf yang berfungsi untuk menyimpan grafik perbandingan ke dalam file
bertipe pdf, dapat dilihat pada Gambar 4.8.
Universitas Sumatera Utara
Gambar 4.6. Halaman Char Sorting Analyze
Gambar 4.7. Dialog print pada halaman Char Sorting Analyze
Universitas Sumatera Utara
Gambar 4.8. Dialog save pada halaman Char Sorting Analyze
4.2.7. Halaman Word Sorting
Halaman Word Sorting merupakan halaman yang tampil ketika user menekan tombol
word sort pada halaman menu utama. Tampilan halaman word sorting sebelum proses
pengurutan dapat dilihat pada Gambar 4.9 dan tampilan halaman word sorting setelah
proses pengurutan dapat dilihat pada Gambar 4.10.
Gambar 4.9. Halaman Word Sorting sebelum proses sorting
Universitas Sumatera Utara
Gambar 4.10. Halaman Word Sorting setelah proses sorting
4.2.8. Halaman String Sorting Analyze
Halaman String Sorting Analyze merupakan halaman yang tampil ketika user menekan
tombol analyze pada halaman word sorting. Tampilan halaman string sorting analyze
dapat dilihat pada Gambar 4.11.
Gambar 4.11. Halaman String Sorting Analyze
Universitas Sumatera Utara
Pada halaman string sorting analyze terdapat tombol lambang print yang berfungsi untuk
mencetak grafik perbandingan, dapat dilihat pada Gambar 4.12. Selain itu terdapat juga
tombol lambang pdf yang berfungsi untuk menyimpan grafik perbandingan ke dalam file
bertipe pdf, dapat dilihat pada Gambar 4.13.
Gambar 4.12. Dialog print pada halaman String Sorting Analyze
Gambar 4.13. Dialog save pada halaman String Sorting Analyze
Universitas Sumatera Utara
4.2.9. Halaman About
Halaman About merupakan halaman yang tampil ketika user menekan tombol about pada
halaman menu utama. Tampilan about dapat dilihat pada Gambar 4.14.
Gambar 4.14. Halaman About
4.3. Pengujian Sistem
Pengujian sistem dilakukan untuk mengetahui bagaimana kinerja algoritma Bitonic sort,
Odd-Even sort dan Comb sort dalam melakukan pengurutan pada data bertipe char dan
string. Dalam pengujian yang akan dibandingkan adalah waktu yang dibutuhkan oleh
masing-masing algoritma dalam melakukan pengurutan yang kemudian hasil perbandingan
tersebut akan ditampilkan dalam bentuk grafik.
Aplikasi ini terdiri dari 2 (dua) menu utama pengurutan, yaitu pengurutan yang dilakukan
pada data bertipe char (Menu Character Sorting) dan pengurutan yang dilakukan pada data
yang bertipe string (Menu Word Sorting).
3.3.1. Pengujian Generate Data
Generate data merupakan proses untuk membangkitkan data acak yang akan diurutkan.
Pada aplikasi ini, sistem menerima inputan dari user untuk menentukan banyak karakter
Universitas Sumatera Utara
yang akan diurutkan, contoh n=100. Data acak yang berhasil dibangkitkan sistem dengan
total karakter :100, tipe karakter: numeric, total sampel : 2 dan sort order : ascending
dapat dilihat pada Gambar 4.15. Untuk total sampel, user dapat memilih minimal 2
(sampel) maksimal 10 (sepuluh). Sampel pertama hasil pembangkitan data (generate
data) merupakan sampel data terurut sedangkan sampel kedua sampai dengan sampel
sepuluh merupakan sampel data acak.
Gambar 4.15. Generate data Numeric
Data acak yang berhasil dibangkitkan sistem dengan total karakter :100, tipe karakter: alphabet,
total sampel : 2 dan sort order : ascending dapat dilihat pada Gambar 4.16.
Gambar 4.16. Generate data Alphabet
Data acak yang berhasil dibangkitkan sistem dengan total karakter :100, tipe karakter:
alphanumeric, total sampel : 2 dan sort order : ascending dapat dilihat pada Gambar
4.17.
Universitas Sumatera Utara
Gambar 4.17. Generate data Alphanumeric
Data acak yang berhasil dibangkitkan sistem dengan total karakter :100, tipe karakter:
alphanumeric & symbol, total sampel : 2 dan sort order : ascending dapat dilihat pada
Gambar 4.18.
Gambar 4.18. Generate data Alphanumeric & Symbol
3.3.2. Pengujian Pengurutan Karakter
Pada proses ini sistem melakukan pengurutan data hasil generate data dengan jumlah 100
karakter, tipe karakter numeric, alphabet, alphanumeric dan alphanumeric & symbol,
Universitas Sumatera Utara
dengan jumlah sampel 2(dua). Hasil pengurutan n=100, tipe karakter = numeric dan total
sampel = 2 dengan menggunakan algoritma Bitonic Sort dapat dilihat pada Gambar 4.19.
Gambar 4.19. Hasil pengurutan algoritma Bitonic Sort tipe karakter numeric
Hasil pengurutan n=100, tipe karakter = numeric dan total sampel = 2 dengan
menggunakan algoritma Odd-Even Sort dapat dilihat pada Gambar 4.20.
Gambar 4.20. Hasil pengurutan algoritma Odd-Even Sort tipe karakter numeric
Hasil pengurutan n=100, tipe karakter = numeric dan total sampel = 2 dengan
menggunakan algoritma Comb Sort dapat dilihat pada Gambar 4.21.
Universitas Sumatera Utara
Gambar 4.21. Hasil pengurutan algoritma Comb Sort tipe karakter numeric
Hasil pengurutan n=100, tipe karakter= alphabet dan total sampel = 2 menggunakan
algoritma Bitonic Sort dapat dilihat pada Gambar 4.22.
Gambar 4.22. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphabet
Hasil pengurutan n=100, tipe karakter= alphabet dan total sampel = 2 menggunakan
algoritma Odd-Even Sort dapat dilihat pada Gambar 4.23
Universitas Sumatera Utara
Gambar 4.23. Hasil pengurutan algoritma Odd-Even Sort tipe karakter alphabet
Hasil pengurutan n=100, tipe karakter= alphabet dan total sampel = 2 menggunakan
algoritma Comb Sort dapat dilihat pada Gambar 4.24.
Gambar 4.24. Hasil pengurutan algoritma Comb Sort tipe karakter alphabet
Hasil pengurutan n=100, tipe karakter= alphanumeric dan total sampel = 2 dengan
menggunakan algoritma Bitonic Sort dapat dilihat pada Gambar 4.25.
Universitas Sumatera Utara
Gambar 4.25. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphanumeric
Hasil pengurutan n=100, tipe karakter= alphanumeric dan total sampel = 2 dengan
menggunakan algoritma Odd-Even Sort dapat dilihat pada Gambar 4.26.
Gambar 4.26. Hasil pengurutan algoritma Odd-Even Sort tipe karakter alphanumeric
Universitas Sumatera Utara
Hasil pengurutan n=100, tipe karakter= alphanumeric dan total sampel = 2 dengan
menggunakan algoritma Comb Sort dapat dilihat pada Gambar 4.27.
Gambar 4.27. Hasil pengurutan algoritma Comb Sort tipe karakter alphanumeric
Hasil pengurutan n=100, tipe karakter= alphanumeric & symbol dan total sampel = 2
dengan menggunakan algoritma Bitonic Sort dapat dilihat pada Gambar 4.28.
Gambar 4.28. Hasil pengurutan algoritma Bitonic Sort tipe karakter alphanumeric & symbol
Universitas Sumatera Utara
Hasil pengurutan n=100, tipe karakter= alphanumeric & symbol dan total sampel = 2
dengan menggunakan algoritma Odd-Even Sort dapat dilihat pada Gambar 4.29.
Gambar 4.29. Hasil pengurutan algoritma Odd-Even Sort tipe karakter alphanumeric & symbol
Hasil pengurutan n=100, tipe karakter= alphanumeric & symbol dan total sampel = 2
dengan menggunakan algoritma Comb Sort dapat dilihat pada Gambar 4.30.
Gambar 4.30. Hasil pengurutan algoritma Comb Sort tipe karakter alphanumeric &
symbol
3.3.3. Pengujian Grafik Perbandingan
Grafik perbandingan dapat dilihat setelah proses pengurutan selesai dilakukan. Terdapat 2
grafik perbandingan karakter. Grafik pertama menggambarkan perbandingan waktu yang
dibutuhkan algoritma bitonic sort, odd-even sort dan comb sort melakukan pengurutan
Universitas Sumatera Utara
data terurut. Grafik kedua menggambarkan perbandingan waktu yang dibutuhkan ketiga
algoritma tersebut untuk mengurutkan data acak. Grafik perbandingan dengan total
karakter : 100, tipe karakter : numeric dapat dilihat pada Gambar 4.31.
Gambar 4.31. Grafik perbandingan pengurutan karakter numeric
Grafik perbandingan dengan total karakter : 100, tipe karakter : alphabet dapat dilihat
pada Gambar 4.32.
Gambar 4.32. Grafik perbandingan pengurutan karakter alphabet
Universitas Sumatera Utara
Grafik perbandingan dengan total karakter : 100, tipe karakter : alphanumeric dapat
dilihat pada Gambar 4.33.
Gambar 4.33. Grafik perbandingan pengurutan karakter alphanumeric
Grafik perbandingan dengan total karakter : 100, tipe karakter : alphanumeric & symbol
dapat dilihat pada Gambar 4.34.
Gambar 4.34. Grafik perbandingan pengurutan karakter alphanumeric & symbol
Universitas Sumatera Utara
3.3.4. Hasil Pengujian Pengurutan Karakter
Berdasarkan hasil pengujian dari penelitian di atas, hasil running time dari pengurutan
karakter menggunakan algoritma bitonic sort, odd-even sort dan comb sort yang
dilakukan terhadap jenis karakter yang berbeda. Hasil pengujian dibagi atas 2(dua) bagian
yaitu pengurutan data terurut dan pengurutan data acak. Adapun hasil pengujian ketiga
algoritma yang digunakan dapat dilihat pada Tabel 4.1 dan Tabel 4.2.
Tabel 4.1 Hasil Pengujian algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort
pada pengurutan data terurut
Setelah mendapatkan hasil pengujian pengurutan data terurut dari Tabel 4.1 maka dapat
dibuat grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe
karakter numeric dapat dilihat pada Gambar 4.35.
Total Karakter
Tipe Karakter Running Time (ms) Bitonic Sort Odd-Even Sort Comb Sort
100 Numeric 0,26120 0,02090 0,05780
Alphabet 0,52060 0,00650 0,07270
Alphanumeric 0,36290 0,01070 0,05870
Alphanumeric & symbol 4,33120 0,01300 0,06480
1000 Numeric 26,13550 0,16460 1,01280
Alphabet 26,92160 0,02470 0,90740
Alphanumeric 27,44140 0,02560 0,81680
Alphanumeric & symbol 7,16540 0,03870 0,81590
5000 Numeric 28,48410 0,46000 5,46400
Alphabet 46,25570 0,40540 6,38860
Alphanumeric 25,34520 0,24440 5,46400
Alphanumeric & symbol 48,23940 0,31670 3,89690
10000 Numeric 68,83210 0,66340 16,47270
Alphabet 82,14410 3,37950 15,00320
Alphanumeric 76,99260 1,41680 32,17760
Alphanumeric & symbol 64,69390 0,35920 13,88580
Universitas Sumatera Utara
Gambar 4.35 Grafik perbandingan running time pengurutan data terurut untuk
tipe karakter numeric
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karakter
alphabet dapat dilihat pada Gambar 4.36.
Gambar 4.36 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter alphabet
0,2612
26,1355 28,484168,8321
0,0209
0,1646 0,46 0,6634
0,0578
1,0128
5,46416,4727
0,01
0,1
1
10
100 1000 5000 10000
Wak
tu (m
s)
Jumlah karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
0,5206
26,921646,2557
82,1441
0,00650,0247
0,4054
3,3795
0,0727
0,9074
6,388615,0032
0,001
0,01
0,1
1
10
100 1000 5000 10000
Wak
tu (m
s)
Jumlah karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karakter
alphanumeric dapat dilihat pada Gambar 4.37.
Gambar 4.37 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter alphanumeric
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karakter
alphanumeric & symbol dapat dilihat pada Gambar 4.38.
Gambar 4.38 Grafik perbandingan running time pengurutan data terurut untuk tipe karakter alphanumeric & symbol
Berdasarkan grafik pada Gambar 4.35 - Gambar 4.38 dijelaskan bahwa algoritma Odd-
Even sort memiliki waktu tercepat dalam mengurutkan data terurut numeric, alphabet,
0,3629
27,4414 25,345276,9926
0,01070,0256
0,2444
1,4168
0,0587
0,8168
5,464
32,1776
0,01
0,1
1
10
100 1000 5000 10000
Wak
tu (m
s)
Jumlah karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
4,3312 7,1654
48,2394 64,6939
0,0130,0387
0,3167 0,35920,0648
0,81593,8969
13,8858
0,01
0,1
1
10
100 1000 5000 10000
Wak
tu (m
s)
Jumlah karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
alphanumeric dan alphanumeric & symbol dibandingkan algoritma Comb sort dan
algoritma Bitonic sort. Algoritma Bitonic memiliki waktu terlama dalam melakukan
pengurutan data terurut.
Tabel 4.2 Hasil Pengujian algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort
pada pengurutan data acak
Total Sampel : 5 Sort Order : Ascending
Total Karakter
Sampel Tipe Karakter
Running Time (ms) Bitonic Sort Odd-Even Sort Comb Sort
100 2 Numeric 1,25820 0,47020 0,05970 3 0,96750 2,03680 0,06810 4 0,18470 0,30790 0,06010 5 0,18240 0,29990 0,05590
Rata-rata 0,64820 0,77870 0,06095 100 2 Alphabet 0,31810 1,56660 0,04710
3 1,00910 0,31350 0,03960 4 0,19640 1,19010 0,04010 5 0,17160 0,30830 0,05830
Rata-rata 0,42380 0,84463 0,04628 100 2 Alphanumeric 0,42960 0,56870 0,06010
3 0,17630 0,35310 0,06290 4 0,17860 1,15180 0,06110 5 0,21500 0,39230 0,06850
Rata-rata 0,24988 0,61648 0,06315 100 2 Alphanumeric
& symbol 0,33260 0,32370 0,05920
3 0,22160 0,31770 0,06570 4 0,18140 0,23550 0,06340 5 0,18700 0,22020 0,06250
Rata-rata 0,23065 0,27428 0,06270 1000 2 Numeric 4,56920 51,44770 2,36900
3 2,27430 19,58120 0,93300 4 2,78090 18,84080 0,56630 5 2,62750 18,76760 0,56120
Rata-rata 3,06298 27,15933 1,10738 1000 2 Alphabet 4,70260 48,52160 1,06780
3 2,51460 20,54830 2,09330 4 2,76790 21,16320 0,89060 5 2,41750 20,41120 0,69140
Rata-rata 3,10065 27,66108 1,18578 1000 2 Alphanumeric 4,74970 51,13090 1,05760
Universitas Sumatera Utara
3 3,50220 20,99250 1,50310 4 4,34940 20,82170 0,70210 5 2,42030 20,87210 0,65360
Rata-rata 3,75540 28,45430 0,97910 1000 2 Alphanumeric
& symbol 3,67200 28,66090 3,24930
3 2,79350 20,84970 0,82150 4 2,33310 20,71540 0,64610 5 2,98200 20,66310 1,63420
Rata-rata 2,94515 22,72228 1,58778 5000 2 Numeric 22,64630 514,15360 9,40940
3 20,54930 464,78570 5,87690 4 17,19400 461,63100 6,01210 5 17,71510 477,11140 5,50780
Rata-rata 19,52618 479,42043 6,70155 5000 2 Alphabet 57,54110 597,59980 7,23820
3 19,08390 524,53530 7,35760 4 21,00230 519,42680 7,07350 5 19,32740 513,07260 7,64220
Rata-rata 29,23868 538,65863 7,32788 5000 2 Alphanumeric 27,70730 557,33020 7,67530
3 17,34510 521,82100 8,17640 4 16,90010 519,07920 6,52020 5 18,90010 519,45990 8,72360
Rata-rata 20,21315 529,42258 7,77388 5000 2 Alphanumeric
& symbol 27,60180 571,17590 6,90230
3 21,04430 509,41270 8,60330 4 18,35010 516,74240 7,29980 5 17,89980 515,41980 9,02730
Rata-rata 21,22400 528,18770 7,95818 10000 2 Numeric 41,40330 1957,84230 14,38590
3 39,56420 2194,32120 12,16800 4 42,04990 2331,42240 13,29700 5 41,10610 2011,22140 13,67590
Rata-rata 41,03088 2123,70183 13,38170 10000 2 Alphabet 52,73020 2120,81490 15,40020
3 43,87630 2039,70280 15,86720 4 41,74060 2042,76970 15,95490 5 41,62950 2114,98840 16,00390
Rata-rata 44,99415 2079,56895 15,80655 10000 2 Alphanumeric 50,89490 2210,12170 12,98910
3 40,85790 2123,39060 16,31880 4 39,09910 2168,42920 17,46080 5 42,84440 2166,86860 17,24900
Universitas Sumatera Utara
Rata-rata 43,42408 2167,20253 16,00443 10000 2 Alphanumeric
& symbol 47,71220 2145,07270 15,41510
3 42,65920 2077,15590 13,42530 4 39,90100 2157,92610 15,76590 5 43,75360 2070,64170 11,34600
Rata-rata 43,50650 2112,69910 13,98808
Setelah mendapatkan hasil pengujian pengurutan data terurut dari Tabel 4.2 maka dapat
dibuat grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe
karater numeric dapat dilihat pada Gambar 4.39.
Gambar 4.39. Grafik perbandingan running time pengurutan data acak untuk tipe karakter numeric
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karater
alphabet dapat dilihat pada Gambar 4.40.
0,6482
3,06298
19,5261841,03088
0,7787
27,15933
479,42043
2123,70183
0,06095
1,10738
6,7015513,3817
0,01
0,1
1
10
100
1000
10000
100 1000 5000 10000
Wak
tu (m
s)
Jumlah Karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
Gambar 4.40. Grafik perbandingan running time pengurutan data acak untuk tipe karakter alphabet
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karater
alphanumeric dapat dilihat pada Gambar 4.41.
Gambar 4.41. Grafik perbandingan running time pengurutan data acak untuk tipe karakter alphanumeric
0,42383,10065
29,23868 44,99415
0,84463
27,66108
538,658632079,56895
0,04628
1,185787,32788 15,80655
0,01
0,1
1
10
100
1000
10000
100 1000 5000 10000
Wak
tu (m
s)
Jumlah Karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
0,24988
3,7554
20,2131543,42408
0,61648
28,4543
529,422582167,20253
0,06315
0,9791
7,7738816,00443
0,01
0,1
1
10
100
1000
10000
100 1000 5000 10000
Wak
tu (m
s)
Jumlah Karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
Grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dengan tipe karater
alphanumeric & symbol dapat dilihat pada Gambar 4.42.
Gambar 4.42. Grafik perbandingan running time pengurutan data acak untuk tipe karakter alphanumeric & symbol
Berdasarkan grafik pada Gambar 4.39 - Gambar 4.42 dijelaskan bahwa algoritma Comb
sort memiliki waktu tercepat dalam mengurutkan data acak numeric, alphabet,
alphanumeric dan alphanumeric & symbol dibandingkan algoritma Bitonic sort dan
algoritma Odd-Even sort. Algoritma Odd-Even sort memiliki waktu terlama dalam
melakukan pengurutan data acak.
3.3.5. Pengujian Pengurutan String
Pada proses pengurutan string, diawali dengan membuka file bertipe txt , membaca isi file
dan menampilkan isi file. Kemudian sistem akan melakukan pengurutan isi file baik
secara ascending maupun descending. Pengujian pengurutan string dengan menggunakan
algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort dapat dilihat pada Gambar 4.43.
0,23065
2,94515
21,22443,5065
0,27428
22,72228
528,18772112,6991
0,0627
1,58778
7,95818 13,98808
0,01
0,1
1
10
100
1000
10000
100 1000 5000 10000
Wak
tu (m
s)
Jumlah Karakter
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
Gambar 4.43. Pengurutan String
Setelah proses pengurutan selesai, grafik perbandingan dapat dilihat pada Gambar 4.44.
Gambar 4.44. Grafik perbandingan pengurutan string
Universitas Sumatera Utara
3.3.6. Hasil pengujian pengurutan string
Berdasarkan hasil pengujian dari penelitian di atas, hasil running time dari pengurutan
string menggunakan algoritma bitonic. Adapun hasil pengujian ketiga algoritma yang
digunakan dapat dilihat pada Tabel 4.3.
Tabel 4.3 Hasil pengujian pengurutan string
No Jumlah String Running Time (ms) Bitonic Sort Odd-Even Sort Comb Sort
1 10 0,11380 0,06570 0,02750 2 50 0,31350 0,52060 0,24160 3 100 2,66760 3,08280 1,44480 4 150 1,87730 4,80480 1,18070 5 200 4,39750 7,45370 2,50570 6 250 5,82320 12,96070 3,42620
Setelah mendapatkan hasil pengujian pengurutan data string dari Tabel 4.3 maka dapat
dibuat grafik perbandingan hasil pengujian dari ketiga algoritma tersebut dapat dilihat
pada Gambar 4.45.
Gambar 4.45. Grafik perbandingan running time pengurutan string
0,11380,3135
2,6676 1,87734,3975 5,8232
0,0657
0,5206
3,0828 4,8048 7,4537 12,9607
0,0275
0,2416
1,4448 1,18072,5057 3,4262
0,01
0,1
1
10
10 50 100 150 200 250
Wak
tu (m
s)
Jumlah String
Running Time
Bitonic Sort Odd-Even Sort Comb Sort
Universitas Sumatera Utara
3.4. Kompleksitas Algoritma
Kompleksitas algoritma yang akan diuji adalah kompleksitas algoritma Bitonic Sort, Odd-
Even Sort dan Comb Sort berikut.
3.4.1. Kompleksitas Algoritma Bitonic Sort
Perhitungan kompleksitas algoritma Bitonic Sort berbeda dengan perhitungan
kompleksitas Comb Sort dan Odd-Even Sort. Perhitungan kompleksitas Bitonic Sort
tidak dapat dilakukan menggunakan tabel C & # melainkan menggunakan cara
recurrence relation. Recurrence relation digunakan untuk menganalisis algoritma yang
rekursif (fungsi yang memanggil dirinya sendiri) selain itu digunakan untuk algoritma
divide dan conquer (dipisah dan disatukan). Bitonic sort merupakan salah satu algoritma
yang rekursif dan melakukan divide dan conquer. Untuk melakukan pengurutan sebuah
list sepanjang n dari dua buah list yang sudah terurut dengan panjang n/2, dibutuhkan
komparasi sebanyak log n, sedangkan banyaknya level komparasi Bitonic Sort secara
keseluruhan adalah sebuah recurrence relation T(n) = log n + T(n/2). Solusi dari
recurrence solution tersebut adalah :
T(n) = (log n) + (log n) – 1 + (log n) – 2 + .... + 1
= log n * ((log n) + 1) / 2
= ((log n)2 + log n) /2
Setiap level komparasi terdiri dari n/2 buah proses komparasi. Sehingga T(n) total untuk
Bitonic Sort = banyak proses komparasi setiap level * banyak level komparasi
= (n/2) * (((log n)2 + log n) / 2)
=(n (log n)2) / 4 + (n log n) / 4
T(n) = ϴ (n (log n)2).
3.4.2. Kompleksitas Comb Sort
Kompleksitas untuk fungsi swap pada algoritma Comb Sort dapat dilihat pada Tabel 4.5
Tabel 4.5 Kompleksitas Fungsi Swap algoritma Comb Sort
Code C # C# private void Swap(IList<T> list, int a, int b)
Universitas Sumatera Utara
{ T temp = list[a]; C1 1 C1 list[a] = list[b]; C2 1 C2 list[b] = temp; C3 1 C3 }
Fase swap algoritma Comb Sort:
T(n) = C1n0 + C2n0 + C3n0
= ϴ(n0) = ϴ(1)
Kompleksitas untuk fungsi sort pada algoritma Comb Sort dapat dilihat pada Tabel 4.6
Tabel 4.6 Kompleksitas Fungsi Sort algoritma Comb Sort
Code C # C# public void Sort(IList<T> list) { stopwatch = new Stopwatch(); C1 1 C1 stopwatch.Start(); C2 1 C2 int gap = list.Count; C3 1 C3 float shrinkFactor = 1.24f; C4 1 C4 bool swapped = false; C5 1 C5 while (gap > 1 || swapped) C6 n C6n { if (gap > 1) C7 n C7n { gap = (int)(gap / shrinkFactor); C3 n C3n } swapped = false; C5 n C5n for (int i = 0; gap + i < list.Count; i++) C8 n2 C8n2
{ if (list[i].CompareTo(list[i + gap]) > 0) C7 n2 C7n2
{ Swap(list, i, i + gap); ϴ(1) n2 ϴ(n2) swapped = true; C5 n2 C5n2
} } } stopwatch.Stop(); C1 1 C1 ticks = stopwatch.ElapsedTicks; C9 1 C9 totalms = stopwatch.Elapsed.TotalMilliseconds; C10 1 C10 }
Universitas Sumatera Utara
Fase Sort algoritma Comb Sort:
T(n) = C1n0 + C1n0 + C2n0 + C3n0 + C4n0 + C5n0 + C6n1 + C7n1 + C3n1 + C5n1 + C8n2
+ C7n2 + ϴ(n2) + C5n2 + C10n0 + C9n0
= (2C1 + C2 + C3 + C4 + C5 + C10 + C9) n0 + (C6 + C7 + C3 + C5) n1 + ( C8 + C7
+ ϴ + C5) n2
= ϴ(n2)
Kompleksitas dari algoritma Comb Sort: C adalah konstanta, # adalah frekuensi yang
berfungsi sebagai ukuran masukan dan C# untuk mencari kompleksitas waktu (T(n)), n
adalah jumlah proses. Jumlahkan hasil dari perkalian C.# , lalu ambil pangkat terbesar
dari nilai masukan(#) dan didapatlah pangkat terbesar yaitu n2.
Pada algoritma Comb Sort fase pertukaran (Swap) memiliki T(n) = ϴ(1) dan pada
fase pengurutan (Sort) memiliki T(n) = ϴ(n2). Maka kompleksitas algoritma Comb Sort
adalah ϴ(n2).
4.4.3. Kompleksitas Algoritma Odd-Even Sort
Kompleksitas untuk fungsi swap pada algoritma Odd-Even Sort dapat dilihat pada Tabel
4.7.
Tabel 4.7 Kompleksitas Fungsi Swap algoritma Odd-Even Sort
private void Swap(Ilist<T> list, int a, int b) C # C# { T temp = list[a]; C1 1 C1 list[a] = list[b]; C2 1 C2 list[b] = temp; C3 1 C3 }
Fase swap algoritma Odd-Even Sort:
T(n) = C1n0 + C2n0 + C3n0
= ϴ(n0) = ϴ(1)
Kompleksitas untuk fungsi innersort pada algoritma Odd-Even Sort dapat dilihat pada
Tabel 4.8.
Universitas Sumatera Utara
Tabel 4.8 Kompleksitas Fungsi InnerSort algoritma Odd-Even Sort
Code C # C# private bool InnerSort(Ilist<T> list, int i) { var sorted = true; C1 1 C1 for (; i < list.Count – 1; i += 2) C2 n C2n { if (list[i].CompareTo(list[i + 1]) > 0) C3 n C3n { Swap(list, i, i + 1); ϴ(1) n ϴ(n) sorted = false; C1 n C1n } } return sorted; C4 1 C4 }
Fase InnerSort algoritma Odd-Even Sort:
T(n) = C1n0 + C2n1 + C3n1 + ϴ(n) + C1n1 + C4n0
= ϴ(n1) = ϴ(n)
Kompleksitas untuk fungsi sort pada algoritma Odd-Even Sort dapat dilihat pada Tabel
4.9.
Tabel 4.9 Kompleksitas Fungsi Sort algoritma Odd-Even Sort
Code C # C# public void Sort(IList<T> list) { stopwatch = new Stopwatch(); C1 1 C1 stopwatch.Start(); C1 1 C1 var sorted = false; C2 1 C2 while (!sorted) C3 n C3n { sorted = InnerSort(list, 1); ϴ(n) n ϴ(n2) sorted = InnerSort(list, 0) && sorted; ϴ(n) n ϴ(n2) } stopwatch.Stop(); C1 1 C1 ticks = stopwatch.ElapsedTicks; C4 1 C4 totalms = stopwatch.Elapsed.TotalMilliseconds; C5 1 C5 }
Fase Sort algoritma Odd-Even Sort:
T(n) = C1n0 + C1n0 + C2n0 + C3n1 + ϴ(n2) + ϴ(n2) + C1n0 + C4n0 + C5n0
= ϴ(n2)
Universitas Sumatera Utara
Kompleksitas dari algoritma Odd-Even Sort: C adalah konstanta, # adalah frekuensi yang
berfungsi sebagai ukuran masukan dan C# untuk mencari kompleksitas waktu (T(n)), n
adalah jumlah proses. Jumlahkan hasil dari perkalian C.# , lalu ambil pangkat terbesar
dari nilai masukan(#) dan didapatlah pangkat terbesar yaitu n2.
Pada algoritma Odd-Even Sort fase pertukaran (Swap) memiliki T(n) = ϴ(1) , fase
InnerSort memiliki T(n) = n dan pada fase pengurutan (Sort) memiliki T(n) = ϴ(n2).
Maka kompleksitas algoritma Odd-Even Sort adalah ϴ(n2).
Berdasarkan hasil perhitungan kompleksitas algoritma Bitonic Sort, Odd-Even
Sort dan Comb Sort, maka diketahui bahwa algoritma Bitonic Sort memiliki nilai T(n)=
ϴ (n (log n)2) yang lebih lama jika dibandingkan dengan algoritma Odd-Even Sort dan
Comb Sort yaitu ϴ(n2). Berikut contoh untuk membuktikan jika ϴ (n (log n)2) lebih lama
dari ϴ(n2).
Contoh : n = 8
T(8) = ϴ(n2)
= 82
= 64 ms (diasumsikan waktu dalam ms)
T(8) = ϴ (n (log n)2)
= 8.(log 8)2
= 8 (3)2
= 8.9
= 72 ms (diasumsikan waktu dalam ms)
Berdasarkan hasil perhitungan di atas algoritma Odd-Even Sort dan Comb Sort memiliki
waktu tercepat jika dibandingkan dengan algoritma Bitonic Sort.
Universitas Sumatera Utara
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Setelah melihat dan mengamati dari hasil analisis yang didapat dari sistem yang telah
diselesaikan, maka dapat ditarik kesimpulan sebagai berikut:
1. Pada penerapan algoritma Bitonic Sort, Odd-Even Sort dan Comb Sort didapat hasil
bahwa Comb Sort memiliki waktu tercepat dalam melakukan pengurutan data acak
bertipe char dan string dibandingkan dengan Bitonic Sort dan Odd-Even Sort. Rata-rata
waktu tercepat yang dibutuhkan oleh Comb Sort untuk mengurutkan 10.000 karakter
adalah 13,3817 ms (tipe karakter numerik) dan untuk mengurutkan 250 string adalah
3,4262. Sedangkan Bitonic Sort memiliki rata-rata waktu 41,03088 ms (untuk 10.000
karakter bertipe numerik) dan untuk mengurutkan 250 string membutuhkan waktu 5,8232
ms. Meskipun Odd-Even Sort memiliki rata-rata waktu yang paling lama dalam
melakukan pengurutan data acak bertipe char yaitu 2123,70183 ms (banyaknya 10.000
karakter bertipe numerik) dan string yaitu 12,9607 ms (banyaknya 250 string), tetapi
dalam mengurutkan data terurut bertipe char Odd-Even Sort memiliki waktu yang paling
cepat yaitu 0.6634 ms (jumlah 10.000 karakter bertipe numerik) dan Bitonic Sort
memiliki waktu yang paling lama yaitu 68,8321 ms.
2. Pada perhitungan kompleksitas algoritma, Odd-Even Sort dan Comb Sort memiliki T(n)
yang sama yaitu n2 sedangkan Bitonic Sort memiliki T(n) = (n(log n)2).
5.2. Saran
Dalam pengembangan penelitian ini penulis memberikan beberapa saran yaitu:
1. Diharapkan penelitian ini dapat dikembangkan dengan desain yang lebih baik lagi (user
friendly).
2. Untuk pengembangan selanjutnya, diharapkan aplikasi ini dapat membaca isi file yang
bertipe pdf, word, dsb. , sebagai masukan untuk melakukan pengurutan data bertipe
string.
Universitas Sumatera Utara
3. Diharapkan penelitian dapat menjadi referensi dan bahan pembelajaran untuk melakukan
penelitian dengan algoritma pengurutan yang berbeda selain Bitonic Sort, Odd-Even Sort
dan Comb Sort.
Universitas Sumatera Utara
Daftar Pustaka
Azizah, U.N. 20s13. Perbandingan Detektor Tepi Prewt dan Detektor Tepi Laplacian
Berdasarkan Kompleksitas Waktu. Skripsi. Universitas Pendidikan Indonesia.
Barakbah, A.R., Karlita, T. & Ahsan, A.S. 2013. Logika dan Algoritma. Program Studi Teknik
Informatika Departemen Teknik Informatika dan Komputer Politeknik Elektronika
Negeri Surabaya: Surabaya.
Dave, P.H. & Dave, H.B. 2008. Design and Analysis of Algorithms. Dorling Kindersley: India.
Ernastuti, Salim, R.A. & Haryanto. 2010. Algoritma Paralel Odd Even Transposition Pada
Model Jaringan Nonlinier, Jurnal Ilmu Komputer dan Informasi, Vol.3, No.2, ISSN
1979-0732.
Knuth, D.E. 1998. The art of computer programming: sorting and searching. Vol. 3. Pearson
Education.
Mukhlis, Y. & Harmanto, L. 2014. Metode Sorting Bitonic pada GPU. Skripsi. Universitas
Gunadarma.
Munir, R. 2005. Algoritma dan Pemrograman I . Edisi 3. INFORMATIKA: Bandung
Murtado, A. & Harsamuda. 2014. Aplikasi Visualisasi Perbandingan Metode-Metode
Pengurutan Data, Jurnal Ilmiah SISFOTENIKA, Vol.4, No.1.
Nugraha, D.W. 2012. Penerapan Kompleksitas Waktu Algoritma Prim Untuk Menghitung
Kemampuan Komputer Dalam Melaksanakan Perintah. Jurnal Ilmiah Fristek Vol.2,
No.2.
Rahayuningsih, P.A. 2016. Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai
(Sorting). Jurnal Evolusi Vol.4, No. 2.
Saniman & Fathoni, M. 2010. Konsep Sorting dalam Pemrograman. Jurnal SAINTIKOM, Vol.8,
No.1.
Universitas Sumatera Utara
Sonita, A. & Nurtaneo, F. 2015. Analisis Perbandingan Algoritma Bubble Sort, Merge Sort, dan
Quick Sort dalam Proses Pengurutan Kombinasi Angka dan Huruf. Jurnal Pseudocode,
Vol.2,No.2,ISSN2355-5920.
Universitas Sumatera Utara
LISTING PROGRAM 1. Program Bitonic Sort
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using System.ComponentModel; namespace PABODCSort { public class BitonicSort <T> where T : IComparable { #region Variable Declaration private List<T> a; private bool ASCENDING = true; // sorting direction private Stopwatch stopwatch; private long ticks; private double totalms; #endregion public bool sortOrder { get { return ASCENDING; } set { ASCENDING = value; } } public long getTicks() { return this.ticks; } public double getTotalMilliSeconds() { return this.totalms; } public void sort_usingBackground(List<T> a, BackgroundWorker worker, DoWorkEventArgs e) { stopwatch = new Stopwatch(); stopwatch.Start(); this.a=a; bitonicSort_usingBackground(0, a.Count, ASCENDING, worker, e); stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } private void bitonicSort_usingBackground(int lo, int n, bool dir, BackgroundWorker worker, DoWorkEventArgs e) { if (n > 1) {
Universitas Sumatera Utara
if (worker.CancellationPending) { e.Cancel = true; //break; } else { int m = n / 2; /* Sequentially Mode ---------------*/ bitonicSort_usingBackground(lo, m, !dir, worker, e); bitonicSort_usingBackground(lo + m, n - m, dir, worker, e); bitonicMerge(lo, n, dir); /*----------------------------------*/ } } } public void sort(List<T> a) { stopwatch = new Stopwatch(); stopwatch.Start(); this.a = a; bitonicSort(0, a.Count, ASCENDING); stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } private void bitonicSort(int lo, int n, bool dir) { if (n>1) { int m = n / 2; /* Sequentially Mode ---------------*/ bitonicSort(lo, m, !dir); bitonicSort(lo + m, n - m, dir); bitonicMerge(lo, n, dir); /*----------------------------------*/ } } private void bitonicMerge(int lo, int n, bool dir) { if (n>1) { int m=greatestPowerOfTwoLessThan(n); for (int i = lo; i < lo + n - m; i++) { compare(i, i + m, dir); } /* Sequentially Mode ------------*/ bitonicMerge(lo, m, dir); bitonicMerge(lo+m, n-m, dir); /*------------------------------*/ }
Universitas Sumatera Utara
} private void compare(int i, int j, bool dir) { if (dir == (a[i].CompareTo(a[j]) > 0)) swap(a, i, j); } private void swap(List<T> list, int a, int b) { T temp = list[a]; list[a] = list[b]; list[b] = temp; } private int greatestPowerOfTwoLessThan(int n) { int k=1; while (k<n) k=k<<1; return k>>1; } } }
2. Program Odd-Even Sort
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.ComponentModel; namespace PABODCSort { public class OddEvenSort<T> where T : IComparable { private static bool ASCENDING = true; // sorting direction private Stopwatch stopwatch; private long ticks; private double totalms; public bool sortOrder { get { return ASCENDING; } set { ASCENDING = value; } } public long getTicks() { return this.ticks; } public double getTotalMilliSeconds() {
Universitas Sumatera Utara
return this.totalms; } public void Sort_usingBackground(IList<T> list, BackgroundWorker worker, DoWorkEventArgs e) { stopwatch = new Stopwatch(); stopwatch.Start(); var sorted = false; while (!sorted) { if (worker.CancellationPending) { e.Cancel = true; break; } else { sorted = InnerSort(list, 1); sorted = InnerSort(list, 0) && sorted; } } stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } public void Sort(IList<T> list) { stopwatch = new Stopwatch(); stopwatch.Start(); var sorted = false; while (!sorted) { sorted = InnerSort(list, 1); sorted = InnerSort(list, 0) && sorted; } stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } private bool InnerSort(IList<T> list, int i) { var sorted = true; for (; i < list.Count - 1; i += 2) { if(ASCENDING == true) { if (list[i].CompareTo(list[i + 1]) > 0) { Swap(list, i, i + 1); sorted = false; } } else { if (list[i].CompareTo(list[i + 1]) < 0)
Universitas Sumatera Utara
{ Swap(list, i, i + 1); sorted = false; } } } return sorted; } private void Swap(IList<T> list, int a, int b) { T temp = list[a]; list[a] = list[b]; list[b] = temp; } } }
3. Program Comb Sort using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.ComponentModel; namespace PABODCSort { public class CombSort<T> where T : IComparable { private static bool ASCENDING = true; // sorting direction private Stopwatch stopwatch; private long ticks; private double totalms; public bool sortOrder { get { return ASCENDING; } set { ASCENDING = value; } } public long getTicks() { return this.ticks; } public double getTotalMilliSeconds() { return this.totalms; } public void Sort_usingBackground(IList<T> list, BackgroundWorker worker, DoWorkEventArgs e) { stopwatch = new Stopwatch(); stopwatch.Start();
Universitas Sumatera Utara
int gap = list.Count; float shrinkFactor = 1.24f; bool swapped = false; while (gap > 1 || swapped) { if (worker.CancellationPending) { e.Cancel = true; break; } else { if (gap > 1) { gap = (int)(gap / shrinkFactor); } swapped = false; for (int i = 0; gap + i < list.Count; i++) { if (ASCENDING == true) { if (list[i].CompareTo(list[i + gap]) > 0) { Swap(list, i, i + gap); swapped = true; } } else { if (list[i].CompareTo(list[i + gap]) < 0) { Swap(list, i, i + gap); swapped = true; } } } } } stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } public void Sort(IList<T> list) { stopwatch = new Stopwatch(); stopwatch.Start(); int gap = list.Count; float shrinkFactor = 1.24f; bool swapped = false; while (gap > 1 || swapped) { if (gap > 1) { gap = (int)(gap / shrinkFactor); }
Universitas Sumatera Utara
swapped = false; for (int i = 0; gap + i < list.Count; i++) { if (ASCENDING == true) { if (list[i].CompareTo(list[i + gap]) > 0) { Swap(list, i, i + gap); swapped = true; } } else { if (list[i].CompareTo(list[i + gap]) < 0) { Swap(list, i, i + gap); swapped = true; } } } } stopwatch.Stop(); ticks = stopwatch.ElapsedTicks; totalms = stopwatch.Elapsed.TotalMilliseconds; } private void Swap(IList<T> list, int a, int b) { T temp = list[a]; list[a] = list[b]; list[b] = temp; } } }
Universitas Sumatera Utara
CURRICULUM VITAE
E-mail :
DATA PRIBADI
Nama lengkap : Mariaty Harefa
Tempat / Tanggal lahir : Takengon / 28 Maret 1989
Alamat rumah : Jl. Teratai Raya Huta IV
Pematang Siantar
Jenis Kelamin : Perempuan
Agama : Kristen Protestan
Status : Belum menikah
No. HP : 08116206222
RIWAYAT PENDIDIKAN FORMAL
1996-2001 : SD INDORAYON PORSEA
2001-2004 : SMP INDORAYON PORSEA
2004-2007 : SMA NEGERI 1 MATAULI PANDAN
2008-2011 : POLITEKNIK NEGERI BATAM
SEMINAR
2014 : Peserta Seminar Nasional Literasi Informasi (SENARAI)
PENGALAMAN KERJA
2009 : Magang di PT. Telkom, Pematang Siantar
2011 : Magang di PT.Telkom, Pematang Siantar
2012-2014 : Bekerja di PT. Bank Central Asia, Tbk
Universitas Sumatera Utara