Uploaded by User66875

PPT - Algoritma Pertemuan 3

advertisement
Algoritma (CCC110)
Sesi KJ301
Iksan Ramadhan, S.Kom., M.Kom
Sesi Perkuliahan 03
Algoritma Pencarian
www.esaunggul.ac.id
Algoritma Pencarian (Searching)
o Proses pencarian adalah menemukan nilai (data)
tertentu di dalam sekumpulan data yang bertipe data
sama, sebagai contoh untuk melakukan update
(perubahan) data tertentu, langkah awal yang harus
dilakukan adalah dengan menemukan keberadaan data
tersebut didalam kumpulannya. Jika data yang dicari
ditemukan, maka data tersebut dapat di ubah nilainya
dengan data yang baru.
www.esaunggul.ac.id
o Algoritma pencarian yang paling sederhana adalah
metode sequential search atau dapat disebut juga
dengan linear search (pencarian lurus). Pada dasarnya
algoritma ini dalam prosenya yaitu melakukan
pencarian dengan membandingkan setiap baris
elemen satu persatu secara beruntun, mulai dari
elemen pertama sampai elemen yang dicari
ditemukan, atau seluruh elemen telah diperiksa.
www.esaunggul.ac.id
contoh
o Misalkan nilai yang dicari adalah : x = 21
Dari baris data berikut : 13,16,14,21
Indeks yang dikembalikan adalah : indeks = 3
o Misalkan nilai yang dicari adalah : x = 13
Dari baris data berikut : 13
Indeks yang dikembalikan : indeks = 0
o Misalkan nilai yang dicari adalah : x = 15
Dari baris data berikut : 13, 16, 14, 21, 76, 21
Indeks larik yang dikembalikan : index = -1
www.esaunggul.ac.id
Terdapat dua golongan sequential search
o
o
o
o
Sequential search tanpa boolean
Tanpa sentinel
Dengan sentinel
Sequential search dengan boolean
www.esaunggul.ac.id
Algoritma sequential search tanpa boolean
tanpa sentinel
o Misalkan diberikan data sebagai berikut :
7
6
3
9
8
0
1
2
3
4
Data yang dicari : 9
•Indeks 0 = 9 (Salah)
•Indeks 1 = 9 (Salah)
•Indeks 2 = 9 (Salah)
•Indeks 3 = 9 (Benar)
Maka data yang dicari ditemukan pada indeks ke -3
www.esaunggul.ac.id
Algoritma sequential search tanpa boolean
dengan sentinel
o Misalkan diberikan data sebagai berikut :
Data yang dicari : 9
o Tempatkan data yang dicari pada sentinel.
o Telusuri array seperti sequential search tanpa sentinel, jika data
ditemukan pada sentinel, maka data yang dicari tidak ada/tidak
ditemukan, tapi jika data yang dicari ditemukan bukan pada
sentinel, maka data yang dicari ditemukan.
www.esaunggul.ac.id
Algoritma sequential search dengan boolean
o Misalkan diberikan data sebagai berikut :
7
6
3
9
8
0
1
2
3
4
Data yang dicari : 9
•Indeks 0 = 9
•Indeks 1 = 9
•Indeks 2 = 9
•Indeks 3 = 9 ? (Set variable bernilai True atau 1)
www.esaunggul.ac.id
o Secara umum algoritma pencarian beruntun berjalan lambat.
Waktu pencarian sebanding dengan jumlah baris data. Misalkan
data sebanyak N baris. Maka, pada kasus dimana x terdapat
didalam data tersebut atau x ditemukan pada data yang terakhir,
kita harus melakukan perbandingan seluruh baris data, yang
berarti jumlah perbandingan yang terjadi sebanyak N kali. Dengan
kata lain waktu pencarian dengan algoritma ini sebanding dengan
N. Bayangkan bila data sebanyak 100.000 baris, maka kita harus
melakukan perbandingan sebanyak 100.000 baris data. Andaikan
satu operasi perbandingan membutuhkan waktu 0,01 detik, maka
untuk 100.000 buah perbandingan diperlukan waktu sebesar 1000
detik atau 16,7 menit. Jadi dapat diambil kesimpulan bahwa
algoritma ini tidak cocok untuk diterapkan pada data bervolume
besar.
www.esaunggul.ac.id
Algoritma Binary Search (Pencarian bagi dua)
o Pencarian data yang terurut menunjukkan kinerja yang
lebih baik daripada pencarian pada data yang belum
terurut. Terdapat algoritma pencarian pada data terurut
yang paling efisien, yaitu algoritma binary search
(pencarian bagidua). Algoritma ini digunakan untuk
kebutuhan pencarian data dengan waktu yang cepat.
www.esaunggul.ac.id
o Misalkan diberikan data sebagai berikut :
2
4
5
7
9
0
1
2
3
4
Data yang dicari : 4
1.Bagi data menjadi dua bagian untuk mencari posisi tengah (k) dengan
cara indeks atas (Ia) dijumlahkan dengan indeks bawah (Ib) lalu dibagi dua.
2.Periksa data di posisi tengah (5), lalu bandingkan apakah sama atau
tidak(5 = 4? F), karena tidak sama maka akan diperiksa apakah data di
posisi tengah lebih kecil dari data yang dicari (5 < 4 ? F) karena lebih besar
maka pencarian dilanjutkan ke bagian kiri dengan cara menarik Indeks
bawah ke kiri (Ib = k – 1).
3.Hitung kembali titik tengah dari larik yang ditinjau (didapat k =1)
4.ulangi langkah 1 s/d langkah 2 sampai data ditemukan.
www.esaunggul.ac.id
o Kedua algoritma pencarians sebelumnya mempunyai
kelebihan dan kekurangan masing-masing. Algortima
pancarian beruntun dapat digunakan baik untuk data
yang belum terurut maupun untuk data yang sudah
terurut. Sebaliknya, algoritma binary search hanya
dapat digunakan untuk data yang sudah terurut saja.
www.esaunggul.ac.id
Terima Kasih
www.esaunggul.ac.id
Download