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