Oleh :
TEKNIK INFORMATIKA
TEKNOLGI INFORMASI DAN KOMPUTER
POLITEKNIK NEGERI LHOKSEUMAWE
2020
DAFTAR ISI
DAFTAR ISI.............................................................................................................i
DAFTAR GAMBAR..............................................................................................iii
DAFTAR TABEL...................................................................................................iv
BAB I PENDAHULUAN........................................................................................1
1.1. Tujuan........................................................................................................1
1.2. Alat dan Bahan..........................................................................................1
1.3. Dasar Teori................................................................................................1
1.3.1. Bubble Sort........................................................................................1
1.3.2. String Matching..................................................................................3
BAB II PEMBAHASAN.........................................................................................5
2.1. Bubble Sort................................................................................................5
2.1.1. Source Code.......................................................................................5
2.1.2. Output.................................................................................................5
2.1.3. Analisa...............................................................................................6
2.2. Bubble Sort Improve.................................................................................9
2.2.1. Analisa...............................................................................................9
2.3. String Matching.........................................................................................9
2.3.1. Source Code.......................................................................................9
2.3.2. Output...............................................................................................10
2.3.3. Analisa.............................................................................................10
2.4. String Matching Improve........................................................................11
2.4.1. Source Code.....................................................................................11
2.4.2. Output...............................................................................................12
2.4.3. Analisa.............................................................................................13
BAB III PENUTUP...............................................................................................14
3.1. Kesimpulan..............................................................................................14
REFERENSI..........................................................................................................15
i
DAFTAR GAMBAR
ii
DAFTAR TABEL
iii
1 BAB I PENDAHULUAN
1.1. Tujuan
Tujuan yang ingin dicapai dalam praktikum ini antara lain :
1. Mahasiswa/i dapat mengetahui dan memahami bagaimana cara
menyusun dan mengimplementasikan algoritma bubble sort dan string
matching.
2. Mahasiswa/i dapat mengetahui dan memahami bagaimana cara kerja
dari algoritma bubble sort dan string matching.
3. Mahasiswa/i dapat menganalisa kekurangan dari algoritma bubble sort
dan string matching dan memperbaikinya.
1
Bubble yang artinya gelembung. Algoritma ini akan mengurutkan data dari
yang terbesar ke yang terkecil (ascending) atau sebaliknya (descending).
Untuk belajar algoritma Bubble Sort ini kita hanya perlu memahami
cara yang digunakan untuk mengurutkan data, sederhananya algoritma ini
menggunakan perbandingan dalam operasi antar elemennya. Di bawah ini
merupakan gambaran dari algoritma Bubble Sort dengan array “3 1 4 2 8”.
Proses pertama
(3 1 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 4 2 8)
(1 3 4 2 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 3 2 4 8)
Proses kedua
(1 3 2 4 8) menjadi (1 3 2 4 8)
(1 3 2 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
Proses ketiga
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
(1 2 3 4 8) menjadi (1 2 3 4 8)
Jika kita perhatikan proses diatas, para proses kedua data sudah terurut
dengan benar. Tetapi algoritma Bubble Sort tetap berjalan hingga proses
kedua berakhir. Proses ketiga masih terus berjalan karena pada algoritma
Bubble Sort maksud terurut itu adalah tidak ada satupun penukaran pada
suatu proses. Proses ketiga ini dilakukan untuk verifikasi data [2].
2
Algoritma Bubble Sort ini mempunyai kelebihan dan kekurangan.
Dua hal inilah yang menjadi pertimbangan programmer ketika membuat
program. Berikut ini beberapa kelebihan yang dimiliki oleh algoritma ini:
3
1. Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks,
dinyatakan dengan x[0…m − 1], panjang pattern dinyatakan dengan m.
2. Teks, yaitu tempat pencocokan pattern dilakukan. Dinyatakan dengan
y[0 … n − 1], panjang teks dinyatakan dengan n.
3. Alfabet, berisi semua simbol yang digunakan oleh bahasa pada teks dan
pattern, dinyatakan dengan Σ dengan ukuran dinyatakan ASIZE.
4
1 BAB II PEMBAHASAN
5
Input n = 5
Int a[n];
6
temp = a[j] temp = a[3] temp = 10
a[j] = a[j+1] a[3] = a[3+1] a[3] = 6
a[j+1] = temp a[4] = 10
++j, j=3+1=4
For(j<(n-i)) (4<(5-1)) (4<4) ? Tidak
++i, i=1+1=2
For(i<n) (2<5) ? Ya
For(j=0; j<(n-i); ++j) (0<5-2) (0<3) ? Ya
If(a[j] > a[j+1]) (a[0] > a[0+1]) (2>4) ? Tidak
++j, j=0+1=1
For(j<(n-i)) (1<(5-2)) (1<3) ? Ya
if(a[j] > a[j+1]) (a[1] > a[1+1]) (4>8) ? Tidak
++j, j=1+1=2
For(j<(n-i)) (2<(5-2)) (2<3) ? Ya
if(a[j] > a[j+1]) (a[2] > a[2+1]) (8>6) ? Ya
temp = a[j] temp = a[2] temp = 8
a[j] = a[j+1] a[2] = a[2+1] a[2] = 6
a[j+1] = temp a[3] = 8
++j, j=2+1=3
For(j<(n-i)) (3<(5-2)) (3<3) ? Tidak
++i, i=2+1=3
For(i<n) (3<5) ? Ya
For(j=0; j<(n-i); ++j) (0<5-3) (0<2) ? Ya
If(a[j] > a[j+1]) (a[0] > a[0+1]) (2>4) ? Tidak
7
++j, j=0+1=1
For(j<(n-i)) (1<(5-2)) (1<2) ? Ya
if(a[j] > a[j+1]) (a[1] > a[1+1]) (4>6) ? Tidak
++j, j=1+1=2
For(j<(n-i)) (2<(5-2)) (2<2) ? Tidak
++i, i=3+1=4
For(i<n) (4<5) ? Ya
For(j=0; j<(n-i); ++j) (0<5-4) (0<1) ? Ya
If(a[j] > a[j+1]) (a[0] > a[0+1]) (2>4) ? Tidak
++j, j=0+1=1
For(j<(n-i)) (1<(5-4)) (1<1) ? Tidak
++i, i=4+1=5
8
for(a<n) (3<5) ? Ya
Cetak a[i] a[3] = 8
i++, i=3+1=4
for(i<n) (4<5) ? Ya
Cetak a[i] a[4] = 10
i++, i=4+1=5
for(i<n) (5<5) ? Tidak
9
2.3.2. Output
10
2.4. String Matching Improve
2.4.1. Source Code
11
Gambar 2-6 Source Code String Matching Improve 2
2.4.2. Output
2.4.3. Analisa
String Matching Improve 1
Pada program string matching 1, disini ditambahkan beberapa
syntax untuk mengatasi kekurangan dari metode string matching itu
sendiri yaitu mengatasi masalah sensitive case antara kata yang
dicari dengan string yang ada. Perintah yang ditambahkan terdapat
pada baris 12-15, yaitu pertama diinisialisasi n = kata.length() yaitu
untuk menghitung panjang dari string yang ada untuk dijadikan
parameter pembuatan variabel penampung array dalam tipe data
char. Kemudian dideklarasikan variabel penampung char_array
dengan tipe data char dengan panjang array n+1. Kemudian di copy
string kata kedalam variabel char_array menggunakan perintah
strcpy. Dalam proses copy ini digunakan fungsi c_str() yang berarti
string dicopy karakter per karakter. Kemudian di proses kata =
strlwr(char_array). Disini terjadi proses mengubah semua karakter
dari huruf besar ke huruf kecil, hasilnya disimpan dalam variabel
kata. Kemudian baru dilakukan proses pencarian. Dan ditambahkan
juga pada perintah 25 untuk menghitung jumlah kata yang
ditemukan. Ditambahkan pula pada baris 28-35 perintah if else untuk
12
melihat data ditemukan atau tidak. Di if else ini di cek apakah
variabel jumpa!=0, jika ya, maka akan dicetak data ditemukan dan
jumlahnya. Jika tidak, akan dicetak data tidak ditemukan.
13
2 BAB III PENUTUP
3.1. Kesimpulan
Pada praktikum kali ini dapat diambil kesimpulan bahwa dari metode
bubble sort, ada kekurangan yaitu masih dilakukannya proses pengurutan
walau data sudah terurut pada iterasi tertentu. Sedangkan pada algoritma
string matching juga masih ada kekurangan, yaitu string yang dicari bersifat
case sensitive yang berarti huruf besar maupun kecil berpengaruh terhadap
hasil pencarian. Sehingga solusi dari kekurangan ini dapat dilakukan proses
downcase atau uppercase.
14
REFERENSI
15