[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]
{ Pascal example of COMBSORT with wrapper. }
program combsorttest;
{ Pascal implementation of modified bubble sort or combsort.
combsort algorithm published 4-91 in Byte by Steven Lacey and
Richard Box
Ported from COBOL source by Glenn Grotzinger }
const
irgap: real = 1.3;
var
a: array[1..20] of integer;
swapvalue: integer;
swapnumber: integer;
i: integer;
jumpsize, tablesize, upperlimit: integer;
swap: boolean;
begin
randomize;
for i := 1 to 20 do
a[i] := random(15);
for i := 1 to 20 do
write(a[i], ' ');
writeln;
swap := true;
tablesize := 20;
jumpsize := tablesize;
repeat
jumpsize := trunc(jumpsize/irgap);
swap := true;
for i := 1 to (tablesize-jumpsize) do
begin
swapnumber := i + jumpsize;
if a[i] > a[swapnumber] then
begin
swapvalue := a[i];
a[i] := a[swapnumber];
a[swapnumber] := swapvalue;
swap := false;
end;
end;
until (swap) and (jumpsize <= 1);
for i := 1 to 20 do
write(a[i], ' ');
writeln;
end.
[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]