[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]

    {
    >   Thanks For the code...   It worked great!  BTW, why are there so many
    >   different sorting methods?  Quick, bubble, Radix.. etc, etc

    Yes, there are lots of sorting algorithms out there! I also found this out
    the hard way! :-) A couple of years ago, I only knew the so-called "bubble"
    sort, and decided to create my own sorting algorithm. It would have to be
    faster than bubble, yet remaining small, simple, and not memory hungry.
    and I did it, but only to find out a few weeks later that there were much
    better sorts than the one I created... But it sure was great fun beating
    bubble! (which is brain-dead anyway! ;-)

    So here it is, my two cents to the history of sorting algorithms, the
    amazing, blazingly fast (*)... ELEVAtoR SorT!... Why ELEVAtoR??, you ask in
    unison! Because it keeps going up & down! :-)
    }

    Program mysort;

    Uses Crt;

    Const
      max = 1000;

    Type
      list = Array[1..max] of Word;

    Var
      data  : list;
      dummy : Word;

    Procedure elevatorsort(Var a: list; hi: Word);

    Var
      lo,
      peak,
      temp,
      temp2 : Word;

    begin
      peak := 1;
      lo   := 1;
      Repeat
        temp  := a[lo];
        temp2 := a[lo + 1];
        if temp > temp2 then
        begin
          a[lo]     := temp2;
          a[lo + 1] := temp;
          if lo <> 1 then dec(lo);
        end
          else
        begin
          inc(peak);
          lo:=peak;
        end;
      Until lo = hi;
    end;

    begin
      ClrScr;
      Writeln('Generating ', max ,' random numbers...');
      randomize;
      For dummy:=1 to max do data[dummy]:=random(65535);
      Writeln('Sorting random numbers...');
      elevatorsort(data,max);
      For dummy:=1 to max do Write(data[dummy]:5,'   ');
    end.

    {
    (*) it's speed lies somewhere between "BUBBLE" and "inSERT"; it's much
    faster than "BUBBLE", and a little slower than "inSERT"... :-)
    }

[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]