8/16/2019 Tugas 2 DAA - Algoritma Sorting http://slidepdf.com/reader/full/tugas-2-daa-algoritma-sorting 1/20 1. DESKRIPSI MASALAH Permasalahan pengurutan data (sorting) pada dasarnya adalah suatu metode yang digunakan untuk mengurutkan data yang acak sehingga dapat tertata secara urut dengan aturan tertentu. Ada dua macam urutan yang biasa digunakan dalam proses pengurutan yaitu • urut naik (ascending) yaitu dari data yang mempunyai nilai paling kecil sampai paling besar • urut turun (descending) yaitu data yang mempunyai nilai paling besar sampai paling kecil. Data yang diurutkan sangat bervariasi, dalam hal jumlah data maupun jenis data yang akan diurutkan. Tidak ada algoritma terbaik untuk setiap situasi yang kita hadapi, bahkan cukup sulit untuk menentukan algoritma mana yang paling baik untuk situasi tertentu karena ada beberapa aktor yang mempengaruhi eektiitas algoritma pengurutan. !eberapa aktor yang berpengaruh pada eektiitas suatu algoritma pengurutan antara lain" • banyak data yang diurutkan • kapasitas pengingat (memory) apakah mampu menyimpan semua data yang kita miliki • tempat penyimpanan data, misalnya piringan, pita atau kartu, atau media penyimpan yang lain. Pada tugas ini kelompok kami akan membahas # buah algoritma sorting yaitu algorima bubble sort, insertion sort, dan radi$ sort. Akan dibahas mengenai kompleksitas ketiga algoritma berbeda tersebut sehingga akan ditemukan algoritma yang paling eekti untuk digunakan sebagai algoritma pengurut dat. 2. ALGORITMA A. !ubble %ort • &ara 'erja Diberi nama !ubble karena proses pengurutan secara berangsurangsur bergera*berpindah ke posisi yang tepat , seperti gelembung yang keluar dari sebuah gelas bersoda. !ubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. jika elemen sekarang lebih besar dari elemen berikutnya maka elemen tersebut ditukar (untuk pengurutan ascending) jika elemen sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan descending). algoritma ini seolanh olah menggeser satu per satu elemen dari kenan ke kiri atau kiri ke kanan. tergantung jenis pengurutannya. 'etika suatu proses telah selesai, maka bubble sort akan mengalami proses, demikian seterusnya. !ubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan,serta tercapai pengurutan yang telah diinginkan &ontoh pengurutan data yang dilakukan dengan metode bubble sort sebagai berikut "
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
4) 0elakukan perulangan bersarang dimana perulangan pertama mengulang
sebanyak inde$ n.
) Perulangan kedua mengulang sebanyak inde$ n. dimaksudkan agar
perulangan ini mengecek nilai berulangkali sampai semua data telah di
cek.
5) Didalam perulangan diberikan pengkondisian. Apabila A%& maka nilai
inde$ ke n lebih besar dari nilai inde$ ke n6. 1ntuk D7%& berlaku
sebaliknya.
8) Apabila terjadi kondisi yang demikian maka nilai akan dilakukan
pertukaran dengan variabel bantu temporari.
/) %emua data akan dilakukan pengecekan sampai nilai semua data terurut
sesuai dengan perintah.
9) 0eampilkan semua hasil array yang telah diurutkan. .
-) %727%A3
Pseudocode ". for i: to length;A<
+. do for j:length;A< downto i6
#. do if A;j< = A;j<
4. then e$change A;j< > A; j<
!. ?adi$ %ort
• &ara kerja
?adi$ %ort merupakan salah satu algoritma @on&omparasion %ort (pengurutan
tanpa perbandingan). Proses yang dilakukan dalam metode ini adalah
mengklasiikasikan*menyelesaikan data sesuai dengan kategori terurut yang
tertentu, dan tiap kategori dilakukan pengklasiikasian lagi, dan seterusnya sesuai
kebutuhan, kemudian subkategorikategori atau bagianbagian dari kategori
tersebut digabungkan kembali.
%ecara hariah ?adi$ dapat diartikan sebagai posisi dalam angka, karena cara ini
pertama kalinya mengurutkan nilainilai yang dimasukan (input) berdasarkan
radi$ pertamanya, lalu pengurutan dilakukan berdasarkan radi$ keduanya, dan
begitu seterusnya. Pada sistem desimal, radi$ adalah digit dalam angka desimal.
0isalnya, angka 59B mempunyai # digit yaitu ,5 dan 9.
• Algoritma
Algoritma radi$ sort adalah salah satu algoritma pengurutan yang paling mangkus
karena tidak menggunakan perbandingan secara langsung. 1ntuk kasus bilangan
bulat (integer), algoritma ini akan mengurutkan data dengan mengelompokkan
datadata berdasarkan digit yang memiliki signiicant position dan value yang
sama. 'elompok digit ini ditampung dalam suatu variable bucketB. %truktur
datanya direpresentasikan dengan array. Algoritma ini pertama kali diperkenalkan
pada tahun //8 oleh Cerman Collerith pada mesin tabulasi.
Ada dua jenis radi$ sort saat ini "
2%D (least signiicant digit) radi$ sort, yaitu radi$ sort yang mengurutkan datadimulai dari digit terkecil. Algoritma ini cenderung stabil karena tetap mengikuti
39. public static void mai!Stri"#$ ar"s% {40. && pembuata arra'41. it it(rra'#$ ) e* it#${5+ 90+ 35+ 45+ 150+
3,-42.43. S'stem.out.pritl!Buble Sort%-44. && sebelum di sorti"45. S'stem.out.pritl!Sebelum Sorti" /%-46. or !it i ) 0- i it(rra'.le"t- i% {47. S'stem.out.prit!it(rra'#i$ %-48. ,49. && proses pesorti"50. bubbleSort!it(rra'%-
51. S'stem.out.pritl!%-52.53. && setela di sorti"54. S'stem.out.pritl!Sesuda di sorti" /%-55. or !it i ) 0- i it(rra'.le"t- i% {56. S'stem.out.prit!it(rra'#i$ %-57. ,58. ,59. private static void bubbleSort!it#$ it(rra'% {60. it ) it(rra'.le"t-61. it temp ) 0-62. or !it i ) 0- i - i% {63. or !it ) 1- ! i%- % {
+4. !erdasarkan graik, terlihat baha untuk best case, algoritma bubble sort dan
insertion sort cocok digunakan untuk mengurutkan data dengan jumlah inputan yang
sedikit karena kompleksitas aktunya linear. %ementara penggunaan radi$sort untuk
mengurutkan data, jika data dalam best case, akan memiliki running time yang lebihrendah dari pada pengurutan data dengan menggunakan bubble dan insertion sort hanya
jika jumlah data dibaah -. Eika data yang akan diurutkan berjumlah lebih dari -, maka
running time algoritma radi$ sort menjadi jauh lebih tinggi dibanding running time
algoritma bubble sort dan insertion sort. Cal ini disebabkan radi$ sort memiliki
kompleksitas aktu n log n yang tidak sebanding dengan kompleksitas aktu linier milik
bubble dan insertion sort.
+. %edangkan untuk kasus ratarata dan kasus terburuk (average case dan orst
case), terlihat jelas baha radi$sort jauh lebih unggul dari pada insertion dan bubble sort.
Dapat dilihat dalam tabel listing hasil baha radi$ sort memiliki estimasi running time
yang jauh lebih rendah dibanding bubble sort maupun dibanding insertion sort. !ubblesort dan insertion sort masingmasing memiliki kompleksitas aktu kuadratik yang
mengakibatkan estimasi running time jauh makin membesar seiring dengan banyaknya
jumlah data yang akan disorting. %ehingga bubble sort dan insertion sort sendiri
sebenarnya tidak cocok untuk digunakan dalam pengurutan data baik itu data dalam
jumlah besar maupun data dalam jumlah kecil karena memiliki kompleksitas aktu
kuadratik, yang tidak bisa dibandingkan dengan kompleksitas aktu n log n milik radi$
sort.
+5. %ementara itu, insertion sort memiliki kompleksitas aktu yang sama persis
dengan kompleksitas aktu dari bubble sort sehingga disarankan juga tidak menggunakanalgoritma insertion sort dalam sorting data.
#. Dalam pencarian string ada dua macam yaitu mencari single pattern dan pola
pattern. Pencarian dapat di selesaikan dengan beberapa algoritma string matching
diantaranya !ruteNorce, 'nuth0orrisPratt dan !oyer0ore. 0asingmasing
algoritma mempunya kelebihan dan kelemahan tersendiri.
#+. 1ntuk pencarian single pattern algoritma 'nuth0orrisPratt lebih eekti tetapidalam pencarian pola pattern algoritma !oyer0ore lebih eekti dalam segi aktu.
!erbeda dengan algoritma !ruteNorce eekti dalam segi aktu relati tetap baik
single pattern maupun pola pattern. 7ektivitas algoritma pencarian string dapat
tergantung dari bahasa teks atau artikel yang diperlukan pencarian. Parameter seperti
panjang karakter per kata dan pengulangan karakter dalam kata dapat mempengeruhi