Сортировка методом двунаправленного пузырька

Материал из DRKB


{ **** UBPFD *********** by kladovka.net.ru ****
>> Сортировка различными методами

Сортировка одномерного массива значений типа Double методами:
1) Двунаправленный Пузырёк (BiDirBubbleSort);

Зависимости: Math
Автор:       iZEN, izen@mail.ru
Copyright:   адаптация для Delphi
Дата:        14 сентября 2004 г.
********************************************** }

{ Сортировка Двунаправленным Пузырьком }
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;


Author: iZEN
ID: 04165