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