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

Previous  Top  Next

    
 

 

Code:

{ **** 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;

 

©Drkb::04165