Pencarian ( Searching)

advertisement
Pencarian ( Searching)
Metode Pencarian
• Linear Search
▫ Tanpa Boolean
 Dengan Sentinel
 Tanpa Sentinel
▫ Dengan Boolean
• Binary Search
Linear Search (Pencarian Berurutan)
• Metoda yang paling sederhana dari sejumlah metoda
pencarian adalah metoda pencarian berurutan yang
sering dikenal dengan sequential searching atau linear
search.
• Secara garis besar metoda ini bisa dijelaskan sbb:
▫ Dari vektor yang diketahui, data yang dicari dibandingkan
satu per satu sampai data tersebut ditemukan atau tidak
ditemukan. Pada saat data yang dicari sudah ketemu, maka
proses pencarian langsung dihentikan. Tetapi jika data
yang dicari belum ketemu, maka pencarian diteruskan
sampai seluruh data dibandingkan. Dalam kasus yang
paling buruk, untuk venktor dengan N elemen harus
dilakukan pencarian sebanyak N kali pula.
Algoritma Linear Search
For I = 1 to maks_array do
Begin
If Data_cari = nama_array[i] Then
Ketemu := True
Else
Ketemu := False;
End;
Linear Search
Tanpa boolean tanpa sentinel:
1. Tidak menggunakan variabel boolean.
2. Tidak mempunyai tambahan elemen di akhir array.
Tanpa boolean dengan sentinel:
1. Tidak menggunakan variabel boolean.
2. Mempunyai tambahan elemen di akhir array untuk
menyimpan data cari apabila data cari tidak ditemukan.
Linear Search
Dengan boolean:
1.
Menggunakan variabel boolean.
2.
Menghasilkan nilai TRUE atau FALSE di akhir pencarian.
Algortima :
Input (datacari)
Ketemu := false
I := 1
While (not ketemu and I = maks_array) do
Begin
if (datacari = bilangan[i])
then
ketemu := true
else
I := I +1;
End;
Binary Search
1.
Data harus terurut baik secara ascending atau descending.
2.
Mekanismenya adalah dengan cara membagi dua bagian yaitu
bagian kiri (indeks terkecil/Ia) sampai ke indeks tengah dan
bagian kanan mulai dari indeks tengah sampai indeks terbesar (Ib)
3.
Indeks tengah (k) : (Ia+Ib) div 2.
4.
Jika data yang dicari lebih kecil dari data di indeks tengah maka
pencarian dilanjutkan ke bagian kiri.
5.
Jika data yang dicari lebih besar dari data di indeks tengah maka
pencarian dilanjutkan ke bagian kanan.
Contoh :
• Di bawah ini adalah kunci–kunci carilah kunci 39 dengan mengunakan algorithm Binary Search.
[13, 16, 18, 27, 28, 29, 38, 39, 53].
1 2 3 4 5 6 7 8 9
File ini dinamakan File Sequential (secara berurutan).
Cara penyelesaian.
• Bila di cari kunci 39 maka ;
• terendah = 1, dan tertinggi = 9,
• maka 1 + 9 = 10 , lalu 10 / 2 = 5.
• Nomor urut 5, adalah kunci 28 , tapi 28 < 39,
• [13, 16, 18, 27, 28, 29, 38, 39, 53].
• maka terendah = 5 , dan tertinggi = 9,
• maka : 5 + 9 = 14
• 14 / 2 = 7.
• Nomor urut 7 adalah 38 , tapi 38 < 39,
• [13, 16, 18, 27, 28, 29, 38, 39, 53].
• maka terendah = 8, dan tertinggi = 9, (karena mid + 1 jadi 7+1=8)
• maka : 8 + 9 = 17
• 17 / 2 = 8,5 => 8,5 ≈ 8
• Note: kl mengambil kebawah, haruskonsisten untuk jawaban selanjutnya jika ada kasus yg sama juga harus kebawah
• Nomor urut 8 adalah kunci 39 , dimana kunci 39 = 39. Ketemu pada nomor urut ke 8.
• [13, 16, 18, 27, 28, 29, 38, 39, 53]
Latihan
• Buatkan Program untuk mengimplementasikan
pencarian dengan Linear dan Binary!
Download