Pada kesempatan ini akan dibahas beberpa implementasi dari algoritma pengurutan seperti bubble sort, selection sort, insert sort, dan quick sort. Berikut adalah beberapa implementasi algoritma pengurutan dalam bahasa Pascal :
var
i,j:integer;
begin
for i:=1 to c-1 do
for j:=c downto i+1 do
if(d[j] < d[j-1]) then
swap(d[j],d[j-1]);
end;
var
lok,i,j:integer;
begin
for i:=1 to c-1 do
begin
lok:=i;
for j:= i+1 to c do
if(d[j]<d[lok]) then
lok:=j;
swap(d[i],d[lok]);
end;
end;
procedure swap(var a,b:integer);
var
t:integer;
begin
t:=a;
a:=b;
b:=t
end;
var i,j,temp : integer;
begin
for i:=1 to N-1 do begin
temp:=Data[i];
j:=i;
while (j>0) and (temp < Data[j-1]) do begin
Data[j]:=Data[j-1];
j:=j-1;
end;
Data[j]:=temp;
end;
end;
var
a1,b1,pivot : integer;
begin
a1:=a;
b1:=b;
pivot := d[(a+b) div 2];
repeat
while (d[a1] < pivot) do
inc(a1);
while (d[b1] > pivot) do
dec(b1);
if(a1 <= b1) then
begin
swap(d[a1],d[b1]);
inc(a1);
dec(a1);
end;
until (a1 <= b1);
if (a < b1) then
quicksort(d,a,b1);
if (a1 < b) then
quicksort(d,a1,b);
end;
Keterangan :
array100 adalah type array [1..100] of integer harus dideklarasikan terlebih dahulu pada type.
c adalah jumlah jumlah data pada array.
Bubble Sort
procedure bubblesort(var d:array100; c:integer);var
i,j:integer;
begin
for i:=1 to c-1 do
for j:=c downto i+1 do
if(d[j] < d[j-1]) then
swap(d[j],d[j-1]);
end;
Selection Sort
procedure selectionsort(var d:array100; c:integer);var
lok,i,j:integer;
begin
for i:=1 to c-1 do
begin
lok:=i;
for j:= i+1 to c do
if(d[j]<d[lok]) then
lok:=j;
swap(d[i],d[lok]);
end;
end;
procedure swap(var a,b:integer);
var
t:integer;
begin
t:=a;
a:=b;
b:=t
end;
Insert Sort
procedure InsertionSort(var Data:Tdata);var i,j,temp : integer;
begin
for i:=1 to N-1 do begin
temp:=Data[i];
j:=i;
while (j>0) and (temp < Data[j-1]) do begin
Data[j]:=Data[j-1];
j:=j-1;
end;
Data[j]:=temp;
end;
end;
Quick Sort
procedure quicksort(var d:array100; a,b:integer);var
a1,b1,pivot : integer;
begin
a1:=a;
b1:=b;
pivot := d[(a+b) div 2];
repeat
while (d[a1] < pivot) do
inc(a1);
while (d[b1] > pivot) do
dec(b1);
if(a1 <= b1) then
begin
swap(d[a1],d[b1]);
inc(a1);
dec(a1);
end;
until (a1 <= b1);
if (a < b1) then
quicksort(d,a,b1);
if (a1 < b) then
quicksort(d,a1,b);
end;
Keterangan :
array100 adalah type array [1..100] of integer harus dideklarasikan terlebih dahulu pada type.
c adalah jumlah jumlah data pada array.