Сортировка методом двунаправленного пузырька
{Сортировка одномерного массива значений типа Double методами: 1) Двунаправленный Пузырёк (BiDirBubbleSort); Зависимости: Math} { Сортировка Двунаправленным Пузырьком } procedure BiDirBubbleSort(var data: array of double);
var
i, j, limit, st: Integer;
t: double;
Swapped: Boolean;
begin
limit := High(data) + 1;
st := -1;
while (st < limit)
do begin
Inc(st);
Dec(limit);
Swapped := False;
j := st;
while (j < limit)
do begin
if (data[j] > data[j+1])
then begin
t := data[j];
data[j] := data[j+1];
data[j+1] := t;
Swapped := True;
end;
Inc(j);
end;
if (not Swapped)
then EXIT
else Swapped := False;
j := limit - 1;
repeat
if (data[j] > data[j+1])
then begin
t := data[j];
data[j] := data[j+1];
data[j+1] := t;
Swapped := True;
end;
Dec(j);
until (j < st);
if (not Swapped) then EXIT;
end;
end; |