Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

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