[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]
{
CombSort is an extended BubbleSort algorithm which is nearly
AS FAST AS MergeSort! I found it some months ago in an computer
magazine. It is really useful, because it is really FAST and does
not need much memory so I think it should be included into SWAG.
Thomas Dreibholz
The procedures sort an array <gArray> with <count> elements.
}
procedure CombSort(count : Integer);
var notChanged : Boolean;
i,j : Integer;
gap : Integer;
begin
gap := count;
repeat
notChanged := True;
gap := Trunc(gap / 1.3);
case gap of
0:
gap := 1;
9:
gap := 11;
10:
gap := 11;
end;
for i := 0 to count-gap do
if gArray[i]>gArray[i+gap] then
begin
j := gArray[i+gap]; { Tauschen von gArray[i] und gArray[i+gap] }
gArray[i+gap] := gArray[i];
gArray[i] := j;
notChanged := False;
end;
until (notChanged) and (gap=1);
end;
For comparision: The standard BubbleSort procedure.
procedure BubbleSort(count : Integer);
var notChanged : Boolean;
i,j : Integer;
begin
repeat
notChanged := True;
for i := 0 to count-1 do
if gArray[i]>gArray[i+1] then
begin
j := gArray[i+1]; { Tauschen von gArray[i] und gArray[i+1] }
gArray[i+1] := gArray[i];
gArray[i] := j;
notChanged := False;
end;
until (notChanged);
end;
[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]