1
Program Pengurutan Data
1. Buble Sort
Program Buble_Sort;
USES Crt;
Type MATRIX= Array [1..30] of integer ;
var i,j,n : integer;
FUNCTION INPUTDATA(var m : matrix):integer;
BEGIN
clrscr;
Write ('Masukkan banyak data : '); Readln (n);
For i:= 1 to n do
BEGIN
Write ('Input Data ke- ',i,' : ') ;
Readln (m[i]);
End;
END;
Procedure Tukardata(var a,b : integer);
var c : integer;
Begin
c:= a; a:=b; b:=c;
End;
{Proses Mengurutkan Data Descending}
PROCEDURE DESC(DATA:MATRIX; VAR HASIL:matrix);
var x : integer;
BEGIN
Writeln;
For i:= 1 to n do
2
Begin
For j:= 1 to n do
If Data[i]>data[j] then
tukardata(data[i],data[j]);
End;
hasil:=data;
END;
{Proses Mengurutkan Data Ascending}
FUNCTION ASC(DATA:MATRIX; VAR H:MATRIX):INTEGER;
var x : integer;
BEGIN
For i:= 1 to n do
Begin
For j:= 1 to n do
If data[j]>Data[i] then
tukardata(data[j],data[i])
End;
H:=data;
END;
FUNCTION CETAK(m:MATRIX):INTEGER;
BEGIN
For i:= 1 to n do
Write(' ', m[i]);
writeln;
END;
{PROGRAM UTAMA}
VAR DATA,DES,AS:MATRIX;
BEGIN
CLRSCR;
INPUTDATA(data);
3
DESC(DATA,DES);
ASC(DATA,AS);
write('Data Masukan : ');
CETAK(DATA); {Cetak data input}
write('Data Descending : ');
CETAK(DES); {Cetak data Des}
write('Data Ascending : ');
Cetak(AS); {Cetak data Ascending}
READKEY;
END.
2. Insertion Sort
Program Insertion_sort;
uses crt;
var A,D:array[1..10] of integer;
i,j,n,temp:integer;
Begin
clrscr;
randomize;
write('Tentukan banyaknya data = ');
readln(n);
write('Data masukan :');
for i:=1 to n do
Begin
a[i]:=random(100);
write(' ',a[i],' ');
End;
D:=A;
{Proses Ascending}
4
For i := 2 to n do
Begin
Temp :=a[i];
j := i-1;
while (a[j] > temp) and (j>0) do
begin
a[j+1] := a[j];
dec(j);
end;
a[j+1]:=temp;
end;
{Proses Descending}
for i:=2 to n do
Begin
temp:=D[i];
j:=i-1;
while (D[j]<temp) and (j>0) do
Begin
D[j+1]:=D[j];
dec(j);
End;
D[j+1]:= temp;
End;
writeln;
write('Ascending : ');
for i:=1 to n do
write(' ',a[i],' ');writeln;
write('Descending : ');
for i:=1 to n do
write(' ',d[i],' ');writeln;writeln;
5
writeln('Tekan sebarang tombol');
readkey;
End.
3. Selection Sort
program Selection_sort;
uses crt;
type matrix = array[1..50] of integer;
Procedure input( var n: integer; var data: matrix);
var i: integer;
Begin
clrscr;
randomize;
write('Input banyaknya data = ');readln(n);
write('Input data : ');
FOR i:=1 TO n DO
Begin
data[i]:=RANDOM(100);
write(' ',data[i],' ');
End;writeln;
End;
Procedure tukardata(var a,b : integer);
var c : integer;
Begin
c:=a; a:=b; b:=c;
End;
{Lakukan pengurutan/sorting}
Procedure Ascending(n: integer; data : matrix; var B: matrix);
Var i,j, pos : byte;
6
Begin
For i:= 1 to n-1 do
Begin
Pos:=i;
For j:= i+1 to n do
If data[j] < data[pos] then pos:=j;
If i <> pos then tukardata(data[i],data[pos]);
end;
B:=data;
end;
Procedure Descending(n: integer; data : matrix; var B: matrix);
Var i,j, pos : byte;
Begin
For i:= 1 to n-1 do
Begin
Pos:=i;
For j:= i+1 to n do
If data[j] > data[pos] then pos:=j;
If i <> pos then tukardata(data[i],data[pos]);
end;
B:=data;
end;
{Tampilkan data setelah diurutkan}
Procedure Cetak(n:integer; data :matrix);
var i:integer;
Begin
for i:=1 to n do
begin
write(' ', data[i],' ');
end;writeln;
End;
7
{Program Utama}
var n : integer; A,B,D : matrix;
Begin
clrscr;
input(n,A);
Ascending(n,A,B);
Descending(n,A,D);
write('Data Ascending : ');
cetak(n,B);
write('Data Descending: ');
Cetak(n,D);
readkey;
end.
Program Pencarian Data
1. Metode Binary Search
program Binary_Search;
uses crt;
Var
data : array [1..50] of integer;
i,j,n,x, kiri,tengah,kanan,cari :integer;
ketemu :boolean;
ulang : char;
Begin
clrscr;
randomize;
ulang :='y';
write('Tentukannya banyaknya data (Maks 50) = ');
readln(x);
write('Data input = ');
8
for i := 1 to x do
Begin
data[i]:=random(50);
write(' ',data[i],' ');
End; writeln;
while ulang='y' do
Begin
{Urutkan data}
for i:=1 to x do
for j:=1 to x do
Begin
if data[i]<data[j] then
Begin
n:=data[i];
data[i]:=data[j];
data[j]:=n;
ENd;
End;
{Cetak Data}
write('Data Sorting = ');
for i:=1 to x do
write(' ',data[i],' ');writeln;
writeln;
write('Masukan data yang dicari (dgn Binary Serach) : ');
readln(cari);
kiri:=x;
kanan:=1;
ketemu:=false;
while not(ketemu) do
begin
tengah:=(kiri + kanan) div 2;
If data[tengah]=cari then
begin
9
ketemu:=true;
writeln('Data ditemukan pada index ke ',tengah);
end
else if (cari < data[tengah]) then
kiri := tengah - 1
else kanan:= tengah+1;
if (kanan > kiri) then
begin
ketemu:=true;
writeln('Data tidak ditemukan !');
end;
End;writeln;
write('Ulangi (y/t)?? ');readln(ulang);writeln;
End;
end.
2. Metode Binary Search Dengan Fungsi dan
Prosedur
program Binary_Search;
uses crt;
type matrix = array [1..50] of integer;
Procedure input(var n:integer; var data: matrix);
var i: integer;
Begin
clrscr;
randomize;
write('Input Banyaknya Data (Maks 50) : ');readln(n);
write('Data input = ');
for i := 1 to n do
Begin
10
data[i]:=random(50);
write(' ',data[i],' ');
End;
writeln;
End;
Procedure tukardata(var a,b :integer);
var c:integer;
Begin
c:=a; a:=b; b:=c;
End;
{Urutkan data}
Procedure sort(n : integer; data:matrix; var urut:matrix);
var i,j,x: integer;
Begin
for i:=1 to n do
for j:=1 to n do
Begin
if data[i]<data[j] then
tukardata(data[i],data[j]);
End;
urut:=data;
End;
{Cetak Data}
Procedure Cetak(n : integer;data :matrix);
var i: integer;
Begin
write(' Data Sort = ');
for i:=1 to n do
write(' ',data[i],' ');writeln;
ENd;
Function Cari:integer;
11
var n :integer;
Begin
write('Masukan data yang dicari (dgn Binary Serach) : ');
readln(n);
Cari:=n;
End;
Function Caridata(n : integer; cari :integer; data:matrix):integer;
var kiri,tengah,kanan,i :integer;
ketemu :boolean;
Begin
writeln;
kiri:=1;
kanan:=n;
ketemu:=false;
while not(ketemu) do
begin
tengah:=(kiri + kanan) div 2;
If data[tengah]=cari then
begin
ketemu:=true;
writeln('Data ditemukan pada index ke ',tengah);
end
else if (cari < data[tengah]) then
kanan := tengah - 1
else kiri:= tengah+1;
if (kiri > kanan) then
begin
ketemu:=true;
writeln('Data tidak ditemukan !');
end;
end;
End;
12
{Program Utama}
var A,B:matrix;
c,n: integer;
ya : char;
Begin
clrscr;
ya:='y';
input(n,A);
while ya='y' do
Begin
sort(n,A,B);
cetak(n,B);
c:=cari;
Caridata(n,c,B);
Write('Ulangi? (Y/T) :');
readln(ya);
End;
end.
3. Metode Pencarian Interpolasi
Program Intrpolasi;
uses crt;
Type matrix = array[1..50] of integer;
Procedure input(var n: integer; var data:matrix);
var i:integer;
Begin
randomize;
Write ('Masukkan banyak data : '); Readln (n);
write('Data input = ');
For i:= 1 to n do
BEGIN
13
data[i]:=random(50);
write(' ',data[i],' ');
End;writeln;
End;
Procedure Tukardata(var a,b :integer);
var c:integer;
Begin
c:=a; a:=b; b:=c;
End;
Function Urutkan(n: integer; data :matrix; var urut:matrix):integer;
var i,j,y: integer;
Begin
For i:= 1 to n do
Begin
For j:= 1 to n do
If Data[i]<Data[j] then
tukardata(data[i],data[j]);
End;
urut:=data;
End;
Procedure Cetak(n : integer; data : matrix);
var i: integer;
Begin
write('Data Ascending = ');
for i:=1 to n do
write(' ',data[i], ' ');
writeln;
End;
Function Cari(var cari:integer):integer;
Begin
write('Tentukan Data yang dicari = ');readln(cari);
14
writeln;
End;
Procedure Caridata(n,cari: integer; data:matrix);
var l,h,t,pos : integer; p:real;
label Selesai;
Begin
l:=1; h:=n; t:=0;
while (data[l]<=cari) and (data[h]>=cari) do
Begin
p:=l+((cari-data[l])/(data[h]-data[l]))*(h-l);
pos:= round(p);
if data[pos]=cari then
Begin
t:=1;
goto selesai;
End;
Begin
if data[pos]>cari then
h:=pos-1
else
l:=pos+l;
End;
if l>h then goto selesai;
End;
Selesai:
if t=1 then write('Data ditemukan')
else write('Data tidak ditemukan');
writeln;
End;
{Program Utama}
var A,B : matrix;
n,c: integer;
15
ya : char;
Begin
clrscr;
ya:='y';
input(n,A);
while ya='y' do
Begin
Urutkan(n,A,B);
Cetak(n,B);
cari(c);
Caridata(n,c,B);
write('Ulangi?? (y/t) : ');readln(ya);
End;
End.
4. Metode Pencarian Sekuensial
Program Sequensial_Cari;
uses crt;
var data:array[1..10] of integer;
i,j,n,d,t : integer;
ya : char;
Begin
clrscr;
randomize;
ya:= 'y';
write('Tentukan banyaknya data = ');
readln(n);
for i:=1 to n do
Begin
data[i]:=random(100);
End;clrscr;
16
while ya='y' do
Begin
t:=0;j:=1;
write('Data input : ');
for i:=1 to n do
write(data[i],' ');
writeln;
{cari data}
writeln;
write('Tentukan data yang akan dicari = ');
readln(d);
while (t=0) and (j<= n) do
Begin
if data[j]= d then t:=1;
inc(j);
End;
if t= 1 then
writeln(d,' ada di posisi urutan ke ',j-1)
else
writeln('Data tidak ditemukan');
write('Ulangi?? (y/t) ');readln(ya);
End;
End.

Program Pengurutan (Sorting) dan Pencarian (Searching) Data

  • 1.
    1 Program Pengurutan Data 1.Buble Sort Program Buble_Sort; USES Crt; Type MATRIX= Array [1..30] of integer ; var i,j,n : integer; FUNCTION INPUTDATA(var m : matrix):integer; BEGIN clrscr; Write ('Masukkan banyak data : '); Readln (n); For i:= 1 to n do BEGIN Write ('Input Data ke- ',i,' : ') ; Readln (m[i]); End; END; Procedure Tukardata(var a,b : integer); var c : integer; Begin c:= a; a:=b; b:=c; End; {Proses Mengurutkan Data Descending} PROCEDURE DESC(DATA:MATRIX; VAR HASIL:matrix); var x : integer; BEGIN Writeln; For i:= 1 to n do
  • 2.
    2 Begin For j:= 1to n do If Data[i]>data[j] then tukardata(data[i],data[j]); End; hasil:=data; END; {Proses Mengurutkan Data Ascending} FUNCTION ASC(DATA:MATRIX; VAR H:MATRIX):INTEGER; var x : integer; BEGIN For i:= 1 to n do Begin For j:= 1 to n do If data[j]>Data[i] then tukardata(data[j],data[i]) End; H:=data; END; FUNCTION CETAK(m:MATRIX):INTEGER; BEGIN For i:= 1 to n do Write(' ', m[i]); writeln; END; {PROGRAM UTAMA} VAR DATA,DES,AS:MATRIX; BEGIN CLRSCR; INPUTDATA(data);
  • 3.
    3 DESC(DATA,DES); ASC(DATA,AS); write('Data Masukan :'); CETAK(DATA); {Cetak data input} write('Data Descending : '); CETAK(DES); {Cetak data Des} write('Data Ascending : '); Cetak(AS); {Cetak data Ascending} READKEY; END. 2. Insertion Sort Program Insertion_sort; uses crt; var A,D:array[1..10] of integer; i,j,n,temp:integer; Begin clrscr; randomize; write('Tentukan banyaknya data = '); readln(n); write('Data masukan :'); for i:=1 to n do Begin a[i]:=random(100); write(' ',a[i],' '); End; D:=A; {Proses Ascending}
  • 4.
    4 For i :=2 to n do Begin Temp :=a[i]; j := i-1; while (a[j] > temp) and (j>0) do begin a[j+1] := a[j]; dec(j); end; a[j+1]:=temp; end; {Proses Descending} for i:=2 to n do Begin temp:=D[i]; j:=i-1; while (D[j]<temp) and (j>0) do Begin D[j+1]:=D[j]; dec(j); End; D[j+1]:= temp; End; writeln; write('Ascending : '); for i:=1 to n do write(' ',a[i],' ');writeln; write('Descending : '); for i:=1 to n do write(' ',d[i],' ');writeln;writeln;
  • 5.
    5 writeln('Tekan sebarang tombol'); readkey; End. 3.Selection Sort program Selection_sort; uses crt; type matrix = array[1..50] of integer; Procedure input( var n: integer; var data: matrix); var i: integer; Begin clrscr; randomize; write('Input banyaknya data = ');readln(n); write('Input data : '); FOR i:=1 TO n DO Begin data[i]:=RANDOM(100); write(' ',data[i],' '); End;writeln; End; Procedure tukardata(var a,b : integer); var c : integer; Begin c:=a; a:=b; b:=c; End; {Lakukan pengurutan/sorting} Procedure Ascending(n: integer; data : matrix; var B: matrix); Var i,j, pos : byte;
  • 6.
    6 Begin For i:= 1to n-1 do Begin Pos:=i; For j:= i+1 to n do If data[j] < data[pos] then pos:=j; If i <> pos then tukardata(data[i],data[pos]); end; B:=data; end; Procedure Descending(n: integer; data : matrix; var B: matrix); Var i,j, pos : byte; Begin For i:= 1 to n-1 do Begin Pos:=i; For j:= i+1 to n do If data[j] > data[pos] then pos:=j; If i <> pos then tukardata(data[i],data[pos]); end; B:=data; end; {Tampilkan data setelah diurutkan} Procedure Cetak(n:integer; data :matrix); var i:integer; Begin for i:=1 to n do begin write(' ', data[i],' '); end;writeln; End;
  • 7.
    7 {Program Utama} var n: integer; A,B,D : matrix; Begin clrscr; input(n,A); Ascending(n,A,B); Descending(n,A,D); write('Data Ascending : '); cetak(n,B); write('Data Descending: '); Cetak(n,D); readkey; end. Program Pencarian Data 1. Metode Binary Search program Binary_Search; uses crt; Var data : array [1..50] of integer; i,j,n,x, kiri,tengah,kanan,cari :integer; ketemu :boolean; ulang : char; Begin clrscr; randomize; ulang :='y'; write('Tentukannya banyaknya data (Maks 50) = '); readln(x); write('Data input = ');
  • 8.
    8 for i :=1 to x do Begin data[i]:=random(50); write(' ',data[i],' '); End; writeln; while ulang='y' do Begin {Urutkan data} for i:=1 to x do for j:=1 to x do Begin if data[i]<data[j] then Begin n:=data[i]; data[i]:=data[j]; data[j]:=n; ENd; End; {Cetak Data} write('Data Sorting = '); for i:=1 to x do write(' ',data[i],' ');writeln; writeln; write('Masukan data yang dicari (dgn Binary Serach) : '); readln(cari); kiri:=x; kanan:=1; ketemu:=false; while not(ketemu) do begin tengah:=(kiri + kanan) div 2; If data[tengah]=cari then begin
  • 9.
    9 ketemu:=true; writeln('Data ditemukan padaindex ke ',tengah); end else if (cari < data[tengah]) then kiri := tengah - 1 else kanan:= tengah+1; if (kanan > kiri) then begin ketemu:=true; writeln('Data tidak ditemukan !'); end; End;writeln; write('Ulangi (y/t)?? ');readln(ulang);writeln; End; end. 2. Metode Binary Search Dengan Fungsi dan Prosedur program Binary_Search; uses crt; type matrix = array [1..50] of integer; Procedure input(var n:integer; var data: matrix); var i: integer; Begin clrscr; randomize; write('Input Banyaknya Data (Maks 50) : ');readln(n); write('Data input = '); for i := 1 to n do Begin
  • 10.
    10 data[i]:=random(50); write(' ',data[i],' '); End; writeln; End; Proceduretukardata(var a,b :integer); var c:integer; Begin c:=a; a:=b; b:=c; End; {Urutkan data} Procedure sort(n : integer; data:matrix; var urut:matrix); var i,j,x: integer; Begin for i:=1 to n do for j:=1 to n do Begin if data[i]<data[j] then tukardata(data[i],data[j]); End; urut:=data; End; {Cetak Data} Procedure Cetak(n : integer;data :matrix); var i: integer; Begin write(' Data Sort = '); for i:=1 to n do write(' ',data[i],' ');writeln; ENd; Function Cari:integer;
  • 11.
    11 var n :integer; Begin write('Masukandata yang dicari (dgn Binary Serach) : '); readln(n); Cari:=n; End; Function Caridata(n : integer; cari :integer; data:matrix):integer; var kiri,tengah,kanan,i :integer; ketemu :boolean; Begin writeln; kiri:=1; kanan:=n; ketemu:=false; while not(ketemu) do begin tengah:=(kiri + kanan) div 2; If data[tengah]=cari then begin ketemu:=true; writeln('Data ditemukan pada index ke ',tengah); end else if (cari < data[tengah]) then kanan := tengah - 1 else kiri:= tengah+1; if (kiri > kanan) then begin ketemu:=true; writeln('Data tidak ditemukan !'); end; end; End;
  • 12.
    12 {Program Utama} var A,B:matrix; c,n:integer; ya : char; Begin clrscr; ya:='y'; input(n,A); while ya='y' do Begin sort(n,A,B); cetak(n,B); c:=cari; Caridata(n,c,B); Write('Ulangi? (Y/T) :'); readln(ya); End; end. 3. Metode Pencarian Interpolasi Program Intrpolasi; uses crt; Type matrix = array[1..50] of integer; Procedure input(var n: integer; var data:matrix); var i:integer; Begin randomize; Write ('Masukkan banyak data : '); Readln (n); write('Data input = '); For i:= 1 to n do BEGIN
  • 13.
    13 data[i]:=random(50); write(' ',data[i],' '); End;writeln; End; ProcedureTukardata(var a,b :integer); var c:integer; Begin c:=a; a:=b; b:=c; End; Function Urutkan(n: integer; data :matrix; var urut:matrix):integer; var i,j,y: integer; Begin For i:= 1 to n do Begin For j:= 1 to n do If Data[i]<Data[j] then tukardata(data[i],data[j]); End; urut:=data; End; Procedure Cetak(n : integer; data : matrix); var i: integer; Begin write('Data Ascending = '); for i:=1 to n do write(' ',data[i], ' '); writeln; End; Function Cari(var cari:integer):integer; Begin write('Tentukan Data yang dicari = ');readln(cari);
  • 14.
    14 writeln; End; Procedure Caridata(n,cari: integer;data:matrix); var l,h,t,pos : integer; p:real; label Selesai; Begin l:=1; h:=n; t:=0; while (data[l]<=cari) and (data[h]>=cari) do Begin p:=l+((cari-data[l])/(data[h]-data[l]))*(h-l); pos:= round(p); if data[pos]=cari then Begin t:=1; goto selesai; End; Begin if data[pos]>cari then h:=pos-1 else l:=pos+l; End; if l>h then goto selesai; End; Selesai: if t=1 then write('Data ditemukan') else write('Data tidak ditemukan'); writeln; End; {Program Utama} var A,B : matrix; n,c: integer;
  • 15.
    15 ya : char; Begin clrscr; ya:='y'; input(n,A); whileya='y' do Begin Urutkan(n,A,B); Cetak(n,B); cari(c); Caridata(n,c,B); write('Ulangi?? (y/t) : ');readln(ya); End; End. 4. Metode Pencarian Sekuensial Program Sequensial_Cari; uses crt; var data:array[1..10] of integer; i,j,n,d,t : integer; ya : char; Begin clrscr; randomize; ya:= 'y'; write('Tentukan banyaknya data = '); readln(n); for i:=1 to n do Begin data[i]:=random(100); End;clrscr;
  • 16.
    16 while ya='y' do Begin t:=0;j:=1; write('Datainput : '); for i:=1 to n do write(data[i],' '); writeln; {cari data} writeln; write('Tentukan data yang akan dicari = '); readln(d); while (t=0) and (j<= n) do Begin if data[j]= d then t:=1; inc(j); End; if t= 1 then writeln(d,' ada di posisi urutan ke ',j-1) else writeln('Data tidak ditemukan'); write('Ulangi?? (y/t) ');readln(ya); End; End.