Pencarian Sequential dan Binari
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).
Teknik
pencarian data dari array yang paling mudah adalah dengan cara sequential
search dimana data dalam array dibaca 1 demi satu, diurutkan dari index
terkecil ke index yang terbesar,maupun sebaliknya. Teknik selanjutnya adalah
binary search. Pada metode pencarian ini data harus diurutkan terlebih dahulu.
Pada metode pencarian ini data dibagi menjadi dua bagian (secara logika), untuk
setiap tahap pencarian.
Berikut ini merupakan contoh program pencarian sequential dan binary menggunakan pascal
Untuk kodingnnya bisa dilihat di bawah ini
program pencarian_sequential_dan_binary;
uses crt;
//pendeklarasian constanta
const
nmin=1;
nmax=100;
//pendeklarasian variabel lokal dan array
type arrint = array [nmin..nmax] of integer;
var x : integer;
tabint : arrint;
n,i,j,indeks : integer;
pilih : char;
//function untuk pencarian sequential
function seqsearc1(xx: integer): integer;
var i: integer;
begin
//berikut merupakan algoritma yang digunakan untuk melakukan pencarian sequential
i:=1;
while ((i<n) and (tabint[i]<>xx)) do
i:= i+1;
if tabint[i]= xx then
seqsearc1:=i
else
seqsearc1:=0;
end;
//function untuk pencarian binary
function binary(xx: integer):integer;
//pendeklarasian variabel untuk function binary
var
ats,bwh,tngh: integer;
ketemu:boolean;
indeksxx: integer;
begin
//pendeklarasian nilai awal
ats:= 1;
bwh:= n;
ketemu :=false;
indeksxx := 0;
//berikut merupakan algoritma yang digunakan untuk melakukan pencarian binary
while ((ats <= bwh) and (not ketemu)) do
begin
tngh:= (ats+bwh) div 2;
if xx = tabint[tngh] then
begin
ketemu := true;
indeksxx := tngh;
end
else
begin
if xx = tabint[tngh] then
bwh := tngh-1
else
ats := tngh+1;
end;
end;
binary:=indeksxx;
end;
//berikut merupakan procedure yang digunakan untuk melakukan
//pengurutan data pada pencarian binary
procedure bubble;
var temp:integer;
begin
//berikut algoritma yang digunakan untuk melakukan pengurutan data
for i:=n downto 2 do
begin
for j:=1 to i-1 do
if tabint[j] > tabint[j+1] then
begin
temp := tabint[j+1];
tabint[j+1] := tabint[j];
tabint[j] :=temp;
end;
end;
//algoritma untuk menampilkan data yang telah urut
write('Data setelah diurutkan : ');
for i:= 1 to n do
begin
write(tabint[i],' ');
end;
writeln;
end;
//procedure menu 1 yaitu pencarian sequential
procedure menu1;
begin
clrscr;
writeln(' Pencarian Sequential');
writeln;
//input jumlah data yang akan diinput
write('Jumlah data : '); readln(n);
writeln;
//input data le1 sampai nmenggunakan perulangan for
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(tabint[i]);
end;
writeln;
//pencarian data yang ingin dicari menggunakan pencarian sequential
write('Masukkan Data Yang Ingin Dicari : '); readln(x);
indeks:=seqsearc1(x);
writeln;
if indeks <> 0 then
write(x,' Ditemukan pada indeks ke-',indeks)
else
write(x,' Tidak ditemukan');
readln;
end;
//procedure menu 2 yaitu pencarian binary
procedure menu2;
begin
clrscr;
writeln(' Pencarian Binary');
writeln;
//input jumlah data yang akan diinput
write('Jumlah data : '); readln(n);
writeln;
//input data le1 sampai nmenggunakan perulangan for
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(tabint[i]);
end;
writeln;
//pemanggilan procedure bubble
bubble;
//pencarian data yang ingin dicari menggunakan pencarian binary
write('Masukkan Data Yang Ingin Dicari : '); readln(x);
indeks:=binary(x);
writeln;
if indeks <> 0 then
write(x,' Ditemukan pada indeks ke-',indeks)
else
write(x,' Tidak ditemukan');
readln;
end;
//program utama atau menu utama
begin
repeat
clrscr;
writeln(' Program Pencarian ');
writeln(' ---------------------------');
writeln(' [1] Pencarian Sequential');
writeln(' [2] Pencarian Binary');
writeln(' [0] Keluar ');
writeln;
write(' Pilih : '); readln(pilih);
case pilih of
'1' : menu1;
'2' : menu2;
'0': exit;
end;
until pilih='0';
end.
uses crt;
//pendeklarasian constanta
const
nmin=1;
nmax=100;
//pendeklarasian variabel lokal dan array
type arrint = array [nmin..nmax] of integer;
var x : integer;
tabint : arrint;
n,i,j,indeks : integer;
pilih : char;
//function untuk pencarian sequential
function seqsearc1(xx: integer): integer;
var i: integer;
begin
//berikut merupakan algoritma yang digunakan untuk melakukan pencarian sequential
i:=1;
while ((i<n) and (tabint[i]<>xx)) do
i:= i+1;
if tabint[i]= xx then
seqsearc1:=i
else
seqsearc1:=0;
end;
//function untuk pencarian binary
function binary(xx: integer):integer;
//pendeklarasian variabel untuk function binary
var
ats,bwh,tngh: integer;
ketemu:boolean;
indeksxx: integer;
begin
//pendeklarasian nilai awal
ats:= 1;
bwh:= n;
ketemu :=false;
indeksxx := 0;
//berikut merupakan algoritma yang digunakan untuk melakukan pencarian binary
while ((ats <= bwh) and (not ketemu)) do
begin
tngh:= (ats+bwh) div 2;
if xx = tabint[tngh] then
begin
ketemu := true;
indeksxx := tngh;
end
else
begin
if xx = tabint[tngh] then
bwh := tngh-1
else
ats := tngh+1;
end;
end;
binary:=indeksxx;
end;
//berikut merupakan procedure yang digunakan untuk melakukan
//pengurutan data pada pencarian binary
procedure bubble;
var temp:integer;
begin
//berikut algoritma yang digunakan untuk melakukan pengurutan data
for i:=n downto 2 do
begin
for j:=1 to i-1 do
if tabint[j] > tabint[j+1] then
begin
temp := tabint[j+1];
tabint[j+1] := tabint[j];
tabint[j] :=temp;
end;
end;
//algoritma untuk menampilkan data yang telah urut
write('Data setelah diurutkan : ');
for i:= 1 to n do
begin
write(tabint[i],' ');
end;
writeln;
end;
//procedure menu 1 yaitu pencarian sequential
procedure menu1;
begin
clrscr;
writeln(' Pencarian Sequential');
writeln;
//input jumlah data yang akan diinput
write('Jumlah data : '); readln(n);
writeln;
//input data le1 sampai nmenggunakan perulangan for
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(tabint[i]);
end;
writeln;
//pencarian data yang ingin dicari menggunakan pencarian sequential
write('Masukkan Data Yang Ingin Dicari : '); readln(x);
indeks:=seqsearc1(x);
writeln;
if indeks <> 0 then
write(x,' Ditemukan pada indeks ke-',indeks)
else
write(x,' Tidak ditemukan');
readln;
end;
//procedure menu 2 yaitu pencarian binary
procedure menu2;
begin
clrscr;
writeln(' Pencarian Binary');
writeln;
//input jumlah data yang akan diinput
write('Jumlah data : '); readln(n);
writeln;
//input data le1 sampai nmenggunakan perulangan for
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(tabint[i]);
end;
writeln;
//pemanggilan procedure bubble
bubble;
//pencarian data yang ingin dicari menggunakan pencarian binary
write('Masukkan Data Yang Ingin Dicari : '); readln(x);
indeks:=binary(x);
writeln;
if indeks <> 0 then
write(x,' Ditemukan pada indeks ke-',indeks)
else
write(x,' Tidak ditemukan');
readln;
end;
//program utama atau menu utama
begin
repeat
clrscr;
writeln(' Program Pencarian ');
writeln(' ---------------------------');
writeln(' [1] Pencarian Sequential');
writeln(' [2] Pencarian Binary');
writeln(' [0] Keluar ');
writeln;
write(' Pilih : '); readln(pilih);
case pilih of
'1' : menu1;
'2' : menu2;
'0': exit;
end;
until pilih='0';
end.
Pencarian Sequential dan Binari
Reviewed by Ardiansyahsw
on
02.34
Rating:
Tidak ada komentar: