home *** CD-ROM | disk | FTP | other *** search
- {
- ...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".)
-
- }