[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]