Pencarian dalam konteks pemrograman adalah proses mencari sebuah data dengan kriteria tertentu. Konsep dasar dari algoritma pencarian mempunyai alur sebagai berikut:
Proses searching :
- Sistem menerima suatu nilai yang dicari
- Jika nilai ditemukan, menampilkan data yang bersangkutan
- Jika nilai tidak ditemukan, menampilkan pesan data tidak ditemukan
Metoda Pencarian :
- Pencarian berturutan (sequential search)
- Skema dengan boolean
- Skema tanpa boolean
- Pencarian sequential pada tabel terurut
- Pencarian sequential dengan sentinel
- Binary Search
- Mulai dari posisi tengah
- (tabel harus terurut membesar)
Pembahasan Algoritma
Deklarasi Tabel
Kamus
Constant NMax = 100
Type Tabint : array[1..NMax] of integer
T : Tabint {tabel integer}
N : integer {banyaknya elemen tabel T yang sudah terdefinisi}
Pencarian Sequential
Kasus 1 untuk X = 42
- Diperiksa terhadap {20,15,45,90,76,36,42}
- Ditemukan pada indeks ke 7
- Pencarian dihentikan pada indeks i=7
Kasus 2 untuk X = 58
- Diperiksa terhadap {20,15,45,90,76,36,42,67,88,23}
- Pencarian dihentikan pada indeks i=11
Algoritma Pencarian Sequential skema dengan boolean
Procedure SeqSearch1
(input T:Tabint, N:integer, X:integer output IX : integer; Found : boolean)
Kamus i:integer
Algoritma
i ← 1 ; Found ← false
while (i≤N) and (not Found) do
if (T[i] = X) then
Found ← true
else i ← i+1
endif
endwhile
{(i>N) or (Found) }
if (Found)
then IX ← i
else IX ← 0
endif
Contoh Program
Program Cari
Kamus
{deklarasi tabel T}
x : integer
procedure SeqSearch(input T:Tabint, N:integer, X:integer, output IX : integer, Found : boolean)
procedure IsiTabel(output T:Tabint,N:integer)
Algoritma
IsiTabel(T,N)
input(X)
SeqSearch(T,N,X,IN,Found)
if (Found) then
output (“X ada di indeks ke “,IN)
else output (“X tidak ada”)
endif
Pencarian Sequential skema tanpa boolean
Procedure SeqSearch2
(input T:Tabint, N:integer, X:integer
output IX : integer)
Kamus i:integer
Algoritma
i ← 1
while (i < N) and (T[i] ≠ X) do
i ← i+1
endwhile
{(i >= N) or (T[i] = X) }
if (T[i]=X)
then IX ← i
else IX ← 0
endif
Pencarian Sequential pada tabel terurut
Procedure SeqSearchSorted
(input T:Tabint, N:integer, X:integer
output IX : integer)
Kamus i:integer
Algoritma
i ← 1
while (i < N) and (T[i] < X) do
i ← i+1
endwhile
{(i >= N) or (T[i] >= X) }
if (T[i]=X)
then IX ← i
else IX ← 0
endif
Pencarian Sequential dengan sentinel
Procedure SeqSearchSentinel
(input T:Tabint, N:integer, X:integer
output IX : integer)
Kamus i:integer
Algoritma
T[N+1] = X {pasang sentinel}
i ← 1
while (T[i] ≠ X) do
i ← i+1
endwhile
{(T[i] = X) }
if (i<N+1)
then IX ← i
else IX ← 0
endif
Binary Search
Procedure BinSearch
(input T:Tabint, N:integer, X:integer
output IX : integer)
Kamus Atas,Bawah,Tengah:integer
Found : boolean
Algoritma
Atas←1; Bawah←N; Found←false; IX ← 0
while (Atas <= Bawah)and(not Found) do
Tengah ← (Atas+Bawah) div 2
if(X=T[Tengah])
then Found←true;IX←Tengah
else if(X<T[Tengah])
then Bawah←Tengah-1
else Atas←Tengah+1
endif
endif
endwhile
{(Atas > Bawah)or Found }
Demikian artikel Pembahasan Dan Contoh Algoritma Pencarian.
Dan seperti biasa, terima kasih:)
Comments
Post a Comment