[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]
{
>Has anyone successfully converted the Combsort algorithm (I think it was
>published in DDJ or Byte about two years ago) from C to Pascal? I've
>lost the original C source For this, but if anyone has any info, I would
>appreciate it.
}
Program TestCombSort; { Byte magazine, April '91 page 315ff }
Const
Size = 25;
Type
SortType = Integer;
Var
A: Array [1..size] of SortType;
i: Word;
Procedure CombSort (Var Ain);
Var
A: Array [1..Size] of SortType Absolute Ain;
Switch: Boolean;
i, j, Gap: Word;
Hold: SortType;
begin
Gap := Size;
Repeat
Gap := Trunc (Gap / 1.3);
if Gap < 1 then
Gap := 1;
Switch := False;
For i := 1 to Size - Gap do
begin
j := i + Gap;
if A [i] > A [j] then { swap }
begin
Hold := A [i];
A [i] := A [j];
A [j] := Hold;
Switch := True;;
end;
end;
Until (Gap = 1) and not Switch;
end;
begin
Randomize;
For i := 1 to Size do
A [i] := Random (32767);
WriteLn;
WriteLn ('Unsorted:');
For i := 1 to Size do
Write (A [i]:8);
WriteLn;
CombSort (A);
WriteLn ('Sorted:');
For i := 1 to Size do
Write (A [i]:8);
WriteLn;
end.
[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]