Pencarian (searching) adalah salah satu hal penting dalam banyak kasus pemrograman.
Pencarian (searching) dilakukan untuk
menemukan nilai tertentu pada sejumlah nilai yang tersedia. Terdapat
bermacam-macam algoritma pencarian yang telah dikembangkan dengan ide dasar.
Dua diantaranya adalah pencarian berurutan (sequential
search) dan pencarian biner (binary
search, dicotomic search) .
Berikut ini adalah contoh program pencarian sequential dan binary.
program
praktikum4;
uses
crt;
var data
: array [1..100] of integer;
i,j,x,y,n,t : integer;
pilih : char;
lanjut,ditemukan : boolean;
atas,bawah,tengah : integer;
tabint : integer;
procedure
menu;
begin
clrscr;
writeln (' Program pencarian ');
writeln ('|-----------------------|');
writeln ('| 1. Sequential Search |');
writeln ('| 2. Binary Search |');
writeln ('| 0. Exit |');
writeln ('|-----------------------|');
write
(' Pilih Menu : ');
readln
(pilih);
end;
Procedure
sequential;
begin
clrscr;
writeln ('
Sequential Search ');
writeln ('|----------------------|');
writeln;
write
(' Masukkan Jumlah data : ');
readln(n);
for i:=1 to n do
begin
write (' Data ke- ',i,' : ');
readln(data[i]);
end;
writeln;
writeln ('|----------------------|');
writeln;
write (' Data yang dicari : ');
readln(x);
y:=1;
lanjut:=true;
while ((y<=x) and (lanjut)) do
begin
if data[y] = x then
lanjut:= false else
y:=y+1;
end;
writeln;
if y<=n then
writeln('Data ditemukan di indeks ke :
',y)
else
writeln('Data tidak ditemukan ');
writeln;
writeln('Press any key to continue !');
readkey;
end;
Procedure
binary;
begin
clrscr;
writeln ('
Binary Search ');
writeln ('|----------------------|');
writeln;
write
(' Masukkan Jumlah data : ');
readln(n);
for i:=1 to n do
begin
write (' Data ke- ',i,' : ');
readln(data[i]);
end;
writeln;
writeln ('|----------------------|');
writeln;
for i:=n-1 downto 1 do
for j:= 1 to i do
if data[j] > data[j+1] then
begin
t:=data[j];
data[j]:=data[j+1];
data[j+1]:=t;
end;
writeln('Data yang sudah terurut kan : ');
for i:= 1 to n do
write(data[i]:3);
writeln;
write ('Data yang dicari : ');
readln(x);
atas :=1;
bawah :=n;
ditemukan:=false;
y:=0;
while ((atas <= bawah) and (not
ditemukan)) do
begin
tengah:= (atas+bawah) div 2;
if x= data[tengah] then
begin
ditemukan :=true;
y:= tengah;
end
else
begin
if x = data[tengah] then
bawah:= tengah - 1
else
atas:=tengah+1;
end;
end;
writeln;
if y<=n then
writeln('Data ditemukan di indeks ke :
',y)
else
writeln('Data tidak ditemukan ');
writeln;
writeln('Press any key to continue !');
readkey;
end;
begin
clrscr;
repeat
menu;
case
pilih of
'1' : sequential;
'2' : binary;
'0' : exit;
end;
until
pilih='0';
end.
|
Hasil Output :
Gambar 1.
Tampilan awal
Gambar 2.
Tampilan setelah memilih menu nomor 1
Gambar 3. Tampilan
setelah menginputkan jumlah data
Gambar 4.
Tampilan setelah menginputkan data
Gambar 5. Hasil
output data yang dicari
Gambar 6.
Tampilan saat memilih menu nomor 2
Gambar 7.
Tampilan setelah menginputkan jumlah data
Gambar 8.
Tampilan setelah menginputkan data
Gambar 9. Tampilan
setelah data diurutkan
Gambar 10. Hasil
output data yang dicari
Tidak ada komentar:
Posting Komentar