Source Code Program Pencarian biner (binary search) dengan Metode Divide & Conquer
program Project_video_2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
A : array [1..100] of integer;
n, i : integer;
indeks : integer;
Cari, batasatas, batasbawah, tengah : integer;
ketemu : boolean;
procedure pengurutan; {metode insertion}
var
urut, j,i : integer;
find : boolean;
begin
for i := 2 to n do
begin
urut := A[i];
j := i-1;
find := false;
while (j>=1) and (not find) do
begin
if urut < A[j] then
begin
A[j+1] := A[j];
j := j-1;
end
else
find := true;
end;
A[j+1] := urut;
end;
end;
begin
writeln ;
write ('jumlah data : '); readln (n);
writeln ;
for i := 1 to n do
begin
write (' indeks ', i,' : '); readln (A[i]);
end;
pengurutan;
writeln;
writeln (' data urut');
for i := 1 to n do
write (A[i] :2 ,' ');
writeln;
writeln;
write ('masukan data yang ingin dicari : '); readln (cari);
batasatas :=1;
batasbawah := n;
indeks :=0;
ketemu := false;
while ((batasatas <= batasbawah) and (not ketemu)) do
begin
tengah := (batasatas + batasbawah) div 2;
if cari = A[tengah] then
begin
ketemu := true ;
indeks := tengah;
end
else
begin
if cari < A[tengah] then
batasbawah := tengah-1 {cari di bagian kanan}
else
batasatas := tengah +1; {cari di bagian kiri}
end;
end;
if indeks <> 0 then
begin
writeln;
writeln ('data yang dicari ',cari);
writeln;
writeln ('ditemukan di indeks ', indeks);
writeln;
end
else
writeln(cari,' tidak ditemukan');
writeln;
writeln ('--------------------------------------');
writeln (' Created by : Zanuardy Supria Dwinata ');
writeln ('--------------------------------------');
readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
{$APPTYPE CONSOLE}
uses
SysUtils;
var
A : array [1..100] of integer;
n, i : integer;
indeks : integer;
Cari, batasatas, batasbawah, tengah : integer;
ketemu : boolean;
procedure pengurutan; {metode insertion}
var
urut, j,i : integer;
find : boolean;
begin
for i := 2 to n do
begin
urut := A[i];
j := i-1;
find := false;
while (j>=1) and (not find) do
begin
if urut < A[j] then
begin
A[j+1] := A[j];
j := j-1;
end
else
find := true;
end;
A[j+1] := urut;
end;
end;
begin
writeln ;
write ('jumlah data : '); readln (n);
writeln ;
for i := 1 to n do
begin
write (' indeks ', i,' : '); readln (A[i]);
end;
pengurutan;
writeln;
writeln (' data urut');
for i := 1 to n do
write (A[i] :2 ,' ');
writeln;
writeln;
write ('masukan data yang ingin dicari : '); readln (cari);
batasatas :=1;
batasbawah := n;
indeks :=0;
ketemu := false;
while ((batasatas <= batasbawah) and (not ketemu)) do
begin
tengah := (batasatas + batasbawah) div 2;
if cari = A[tengah] then
begin
ketemu := true ;
indeks := tengah;
end
else
begin
if cari < A[tengah] then
batasbawah := tengah-1 {cari di bagian kanan}
else
batasatas := tengah +1; {cari di bagian kiri}
end;
end;
if indeks <> 0 then
begin
writeln;
writeln ('data yang dicari ',cari);
writeln;
writeln ('ditemukan di indeks ', indeks);
writeln;
end
else
writeln(cari,' tidak ditemukan');
writeln;
writeln ('--------------------------------------');
writeln (' Created by : Zanuardy Supria Dwinata ');
writeln ('--------------------------------------');
readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
Komentar
Posting Komentar