Nurul Fuad
Universitas Islam Lamongan 2021
Metode Searching
1. Sequential Search
2. Binary Search
Definisi Sequential Search
Angka 5 1 9 4 2
1 2 3 4 5
Angka 3 7 12 15 29
1 2 3 4 5
Data yang dicari : 7
Catatan : data harus sudah terurut
Binary Search (lanjutan)
Langkah 1 : bagi larik menjadi 2 bagian untuk mencari
posisi tengah (k) dengan cara indeks atas
(Ia) dijumlahkan dengan indeks bawah
(Ib) lalu dibagi 2.
k = (Ia + Ib) div 2
= (1 + 5) div 2
=3
3 7 12 15 29
1 2 3 4 5
Ia k Ib
Bag. Kiri Bag. Kanan
Binary Search (lanjutan)
Langkah 2 : periksa data di posisi tengah larik (12), lalu
bandingkan apakah sama atau tidak(12 = 7?
F), karena tidak sama maka akan diperiksa
apakah data di posisi tengah lebih kecil dari
data yang dicari (12 < 7 ? F) karena lebih
besar maka pencarian dilanjutkan ke bagian
kiri dengan cara menarik Indeks bawah ke
kiri (Ib = k – 1)
3 7
1 2
Ia Ib
3 7 12 15 29
1 2 3 4 5
Ia k Ib
Ia Ib
k
Ib
Ia
k
- Angka 7 ditemukan pada indeks ke-2
- Data yang dicari ditemukan pada looping ke-3, dengan harga
Ia = 2 dan Ib = 2
Algoritma Binary Search
Procedure binary_search (Input nama_array : tipe_array)
{I.S. : elemen array [1..maks_array] yg terurut secara ascending sudah terdefinisi}
{F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan}
Kamus:
Ia, Ib, k : integer {Ia=indeks bawah, Ib=indeks atas, k=posisi tengah}
ketemu : boolean
data_cari : tipedata
Algoritma:
input(data_cari)
Ia 1
Ib maks_array
ketemu false
while (not ketemu) and (Ia ≤ Ib) do
k (Ia + Ib) div 2
if (nama_var_array(k) = data_cari)
then
ketemu true
else
if (nama_var_array(k) < data_cari)
then
Ia k + 1
else
Ib k – 1
endif
endif
endwhile
if (ketemu)
then
output(data_cari,’ ditemukan pada indeks ke-’,k)
else
output(data_cari,’ tidak ditemukan’)
endif
EndProcedure
TERIMA KASIH