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