Pencarian
(Searching) adalah proses pencarian nilai dari sebuah larik dengan
membandingkan tiap-tiap elemennya berdasarkan algoritma pencarian yang
digunakan.
Pencarian (Searching) terbagi atas :
1.
Sequential
search/ pencarian berurutan.
Algoritma
pencarian ini yaitu membandingkan nilai yang dicari (didefenisikan) dengan
setiap elemen array, mulai indeks terkecil sampai indeks terbesar yang
terdefenisi. Sebagai contoh bila di indeks array ditentukan dari sebuah
variabel n=8 dan tab array berisi
(1,2,3,10,12,70, 42, 30) sedang nilai yang dicari adalah x=10, maka pencarian
akan dihentikan pada (1,2,3,10) dan tidak perlu sampai pada tab array yang
paling terakhir oleh karena nilai yang dicari telah ditemukan. Yakni x=10 ditemukan pada indeks ke-4.
2.
Binary search.
Algoritma
ini juga disebut dengan dikotomik ide dasarnya adalah membandingkan harga x,
dengan elemen tengah array, jika lebih besar dari elemen tengah array, karena
elemen-elemen terurut membesar, maka pencarian dilakukan pada setengah bagian
yang nilainya lebih besar dari x sampai elemen terakhir. Sebagai contoh :
Diketahui sebuah tabel berisi harga integer, tabInt[1..n], yang
telah terisi, dan terurut membesar , tulisakan program dengan bantuan fungsi
yang jka diberikan sebuah x berniali integer , maka akan dicari apakah harga x
ada dalam tabint secara dikotomik, dengan aturan sbb:
Bandingkan x dengan harga elemen tengah :
1.
Jika sama
berarti x ditemukan dalam tabel
2.
Jika
x
3.
Jika x >
tengah, pencarian dilakukan pada elemen bagian atas dengan cara yang sama
3.
Mencari nilai
ekstrim.
mencari nilai ekstrim (terbesar atau terkecil) adalah contoh dari proses sequential terhadap array
selain beberapa contoh pencarian diatas, ide dasar algoritma mencari nilai
ekstrim adalah dengan membandingkan nilai elemen pertama array (diasumsikan
sebagai nilai ekstrim) dengan nilai elemen-elemen sesudahnya.
Contoh
program yang dapat kita kerjakan yaitu sebagai berikut :
Listing
:
program Search;
uses crt;
const
nmin= 1;
nmax= 100;
type
arrint = array [nmin..nmax] of integer;
var
x,i,n,nn: integer;
pil,indeks,maks: integer;
tabint: arrint;
ulang: char;
procedure
Sequential_search1;
function seqsearch1(xx :
integer):integer;
var
i : integer;
begin
i:= 1;
while ((i<> xx)) do
i:= i + 1;
if tabint[i] = xx then
seqsearch1:= i
else
seqsearch1:= 0;
end;
begin
writeln('=**PROGRAM SEQUENTIAL SEARCH 1**=');
write('Input Nilai n = '); readln(n);
for i:= 1 to n do
begin
write('Tabint[',i,'] = '); readln(tabint[i]);
end;
write('Nilai yang di cari = ');readln(x);
indeks:=seqsearch1 (x);
if indeks <> 0 then
write(x, ' Ditemukan pada indeks ke-', indeks)
else
write(x, ' tidak ditemukan');
end;
procedure
Sequential_search2;
function seqsearch2(xx :
integer):integer;
var
i: integer;
ditemukan: boolean;
begin
ditemukan := false;
i := 1;
while ((i
if tabint[i] = xx then
ditemukan := true
else
i := i + 1;
if ditemukan = true then
seqsearch2 := i
else
seqsearch2 := 0;
end;
begin
writeln('=**PROGRAM SEQUENTIAL SEARCH 2**=');
write('Input Nilai n = '); readln(n);
for i:= 1 to n do
begin
write('Tabint[',i,'] = '); readln(tabint[i]);
end;
write('Nilai yang di cari = ');readln(x);
indeks:=seqsearch2 (x);
if indeks <> 0 then
write(x, ' Ditemukan pada indeks ke-', indeks)
else
write(x, ' tidak ditemukan');
end;
procedure
seq_search;
var
L: array [1..5] of integer;
bil,i: integer;
begin
writeln('=**PROGRAM SEQUENTIAL SEARCH**=');
write('Angka yang dicari = ');readln(bil);
L[1]:=1; L[2]:=3; L[3]:=5; L[4]:=7; L[5]:=9;