Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

Program Bubble_Sort;

Uses WinCrt;
const
max = 100;
type
Larik = array [1..max] of integer;
var
A: Larik;
I: integer;
N: integer;
pil:byte;

procedure Jumlah_Data;
begin
write(‘Masukkan banyaknya data = ‘); readln(N);
writeln;
end;
procedure Input;
var
I: integer;
begin
for I:=1 to N do
begin
write(‘Masukkan data ke-’, I, ‘ = ‘); readln(A[I]);
end;
end;
procedure Change(var A, B: integer);
var
T: integer;
begin
T:=A;
A:=B;
B:=T;
end;
procedure asc_buble;
var
p,q :INTEGER;
flag:boolean;
begin
flag:=false;
p:=2;
while (p<N) and (not flag) do
begin
flag:=true;
for q:=N downto p do
if A[q]<A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
writeln;
write(‘Data Diurutkan Secara Ascending: ‘);
end;
procedure desc_buble;
var
p,q :byte;
flag:boolean;
begin
flag:=false;
p:=2;
while (p<max) and (not flag) do
begin
flag:=true;
for q:=max downto p do
if A[q]>A[q-1] then
begin
change(A[q],A[q-1]);
flag:=false;
end;
inc(i);
end;
writeln;
write(‘Data Diurutkan Secara Descending: ‘);
end;
procedure Output;
var
i: integer;
begin
for i:=1 to N do
write(A[i], ‘ ‘);
writeln;
end;
begin
Jumlah_Data;
input;
clrscr;
writeln(‘[1].pengurutan secara Ascending’);
writeln(‘[2].pengurutan secara Descending’);
write(‘Silahkan Masukkan Pilihan Anda = ‘);readln(pil);
case pil of
1:asc_buble;
2:desc_buble;
end;
output;
end.
Program Binary Search
uses wincrt;
const
max =20;
type arr = array[1..max] of byte;
var
i :byte;
data:arr;
pil,lagi:char;
procedure input;
begin
clrscr;
writeln(‘masukkan 20 bilangan’);
for i:=1 to max do
begin
write(‘data ke -’,i,’=');readln(data[i]);
end;
clrscr;
gotoxy(9,1);writeln(‘DATA SEBELUM DIURUTKAN’);
writeln(‘**********************************************’);
for i:=1 to max do
write(data[i],’ ‘);
writeln;
writeln;
gotoxy(8,5);writeln(‘SETELAH DATA DIURUTKAN ‘);
writeln(‘**********************************************’);
end;
procedure move(x,y:byte);
var i:byte;
begin
for i:=y downto x do
data[i]:=data[i-1];
end;
procedure findpos(x:byte; var y:byte);
var i:byte;
begin
y:=x; i:=0;
repeat
inc(i)
until data[x]<=data[i];
y:=i;
end;
procedure insert;
var
i,j,temp:byte;
begin
for i:=2 to max do
begin
temp:=data[i];findpos(i,j);
move(j,i);data[j]:=temp;
end;
end;
procedure cari;
function search(x,n :integer):integer;
var
find :boolean;
l,r,mid,temp:integer;
begin
l:=1;r:=n;
find:=false;
repeat
mid :=(l+r) div 2;
if x=data[mid] then
begin
temp:=mid;find:=true;
end else
if x<data[mid] then
r:=mid-1
else
l:=mid+1;
until find or (l>r);
if not find then temp:=0;
search:=temp;
end;
var
bil:byte;
begin
write(‘bilangan yang dicari:’);readln(bil);
write(‘data yang di cari pada urutan ke -’,search(bil, max));
end;
procedure cari1(var data:arr);
var i:byte;
find:boolean;
cari:byte;
begin
write(‘data yang anda cari ‘);readln(cari);
find:=false;
i:=1;
while (i<=max)and (not find) do
if data[i]= cari then
begin
cari := data[i];
find:=true;
end
else
i:=i+1;
write(‘data tersebut terdapat pada urutan yang ke – ‘,i);
end;
procedure output;
begin
for i:=1 to max do
write(data[i],’ ‘);
end;
begin
repeat
input;
insert;
output;
writeln;
writeln(‘Untuk menemukan data yang anda cari’);
write(‘tekan keyboard nomor 1/2 : ‘);readln(pil);
case pil of
’1′:cari;
’2′:cari1(data)
end;
writeln;
write(‘mau coba lagi tekan (t=tidak/y=coba lagi) ‘);readln(lagi);
until lagi=’t';
end.
procedure move(x,y:byte);
var i:byte;
begin
for i:=y downto x do
data[i]:=data[i-1];
end;
procedure findpos(x:byte; var y:byte);
var i:byte;
begin
y:=x; i:=0;
repeat
inc(i)
until data[x]<=data[i];
y:=i;
end;
procedure insert;
var
i,j,temp:byte;
begin
for i:=2 to max do
begin
temp:=data[i];findpos(i,j);
move(j,i);data[j]:=temp;
end;
end;
procedure cari;
function search(x,n :integer):integer;
var
find :boolean;
l,r,mid,temp:integer;
begin
l:=1;r:=n;
find:=false;
repeat
mid :=(l+r) div 2;
if x=data[mid] then
begin
temp:=mid;find:=true;
end else
if x<data[mid] then
r:=mid-1
else
l:=mid+1;
until find or (l>r);
if not find then temp:=0;
search:=temp;
end;
var
bil:byte;
begin
write(‘bilangan yang anda cari:’);readln(bil);
write(‘data yang anda cari terdapat pada urutan yang ke -’,search(bil, max));
end;
procedure output;
begin
for i:=1 to max do
write(data[i],’ ‘);
end;
begin
input;
insert;
output;
cari;
end

You might also like