0% found this document useful (0 votes)
50 views6 pages

Program Bubble

The document describes a bubble sort algorithm program written in Pascal. It contains procedures to input data, sort the data in ascending and descending order using bubble sort, and output the sorted data. It also contains binary search algorithms to search for a target value within the sorted data array.

Uploaded by

fahmionly1303
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views6 pages

Program Bubble

The document describes a bubble sort algorithm program written in Pascal. It contains procedures to input data, sort the data in ascending and descending order using bubble sort, and output the sorted data. It also contains binary search algorithms to search for a target value within the sorted data array.

Uploaded by

fahmionly1303
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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