Показать сообщение отдельно
  #3  
Старый 11.01.2014, 13:18
aquatell aquatell вне форума
Прохожий
 
Регистрация: 21.04.2011
Сообщения: 31
Репутация: 10
По умолчанию

Применил очень шустрый алгоритм, один из быстрых.
Он так и называется "Быстрая сортировка".
1 млн записей сортирует за 3 сек. На 4-х ядерном процессоре 2,4 Ghz
Другие алгоритмы очень долго с этим справляются - в частности "пузырьком" и "вставкой", они хороши для меньшего количества записей.
Собственно вот сам код алгоритма "Быстрая сортировка", может многим пригодится
Код:
{Сортировка QuickSort}

procedure QuickSort(var data: array of double);

procedure QSort(var b: array of double; iLo, iHi: Integer);

var

   Lo, Hi: Integer;

   Mid, t: double;

begin

   Lo := iLo;

   Hi := iHi;

   Mid := b[(Lo + Hi) div 2];

   repeat

     while b[Lo] < Mid do Inc(Lo);

     while b[Hi] > Mid do Dec(Hi);

     if Lo <= Hi then

     begin

       t := b[Lo];

       b[Lo] := b[Hi];

       b[Hi] := t;

       Inc(Lo);

       Dec(Hi);

     end;

   until Lo > Hi;

   if Hi > iLo then QSort(b, iLo, Hi);

   if Lo < iHi then QSort(b, Lo, iHi);

end;

begin

QSort(data, Low(data), High(data));

end;

Ответить с цитированием