Minggu, 15 Mei 2011

Algoritma Pengurutan

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 :

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.