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

    {
      ...Well, as Greg Vigneault reminded me, there is a much faster
      method of sorting this sort of data called a "Count" sort. I
      often overlook this method, as it doesn't appear to be a sort
      at all at first glance:
    }
    Program Count_Sort_Demo;

    Const
      co_MaxItem = 200;

    Type
      byar_MaxItem = Array[1..co_MaxItem] of Byte;
      byar_256     = Array[0..255] of Byte;

    Var
      by_Index   : Byte;
      wo_Index   : Word;
      DataBuffer : byar_MaxItem;
      SortTable  : byar_256;

    begin
               (* Initialize the pseudo-random number generator.       *)
      randomize;

               (* Clear the CountSort table.                           *)
      fillChar(SortTable, sizeof(SortTable), 0);

               (* Create random Byte data.                             *)
      For wo_Index := 1 to co_MaxItem do
        DataBuffer[wo_Index] := random(256);

               (* Display random data.                                 *)
      Writeln;
      Writeln('RANDOM Byte DATA');
      For wo_Index := 1 to co_MaxItem do
        Write(DataBuffer[wo_Index]:4);

               (* CountSort the random data.                           *)
      For wo_Index := 1 to co_MaxItem do
        inc(SortTable[DataBuffer[wo_Index]]);

               (* Display the CountSorted data.                        *)
      Writeln;
      Writeln('COUNTSORTED Byte DATA');
      For by_Index := 0 to 255 do
        if (SortTable[by_Index] > 0) then
          For wo_Index := 1 to SortTable[by_Index] do
            Write(by_Index:4)
    end.
    {
      ...This Type of sort is EXTEMELY fast, even when compared to
      QuickSort, as there is so little data manipulation being done.

    >BTW, why are there so many different sorting methods?
    >Quick, bubble, Radix.. etc, etc

      ...Because, Not all data is created equally.
      (ie: Some Types of sorts perform well on data that is very
           random, While other Types of sorts perform well on data
           that is "semi-sorted" or "almost sorted".)

    }

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