Самая быстрая сортировка Хоара или она еще известна как "Быстрая сортировка"(кстати она не даром так названа и относится к улучшенным методам сортировок).Хорошо работает на больших объемах данных, а если ее скрестить еще с каким нибудь обычным методом(типа пузырька или простыми вставками,на крайний случай простым выбором), то будет вообще замечательно(хотя смотря как спаришь их)
есть у меня примерчик такого скрещивания:
unit Sorts;
interface
const n=10000; min=100;
Type
Tindex=1..n;
Tarray=array[Tindex]of integer;
procedure Simple_Choice(var A:TArray;down,Up:integer);
procedure Quick_Rec(var A:TArray;n:integer);
implementation
uses grfunc_;
procedure Simple_Choice(var A:TArray;down,up:integer);
var i,j,k:Integer;
Elem:Integer;
begin
for j:=Up downto down+1 do
 begin
  {ищем максимум среди элементов от j до 1
  местоположение максимального элемента запоминается в переменной i}
 i:=j;
 for k:=j-1 downto down do
  if A[i]<A[k]
   then i:=k;
   {i и j меняются местами}
   elem:=A[j];
   A[j]:=A[i];
   A[i]:=elem;
   count:=count+1;
 end;
end;
procedure Quick_Rec(var A:TArray;n:integer);
 procedure QuickSort(left,right:Integer);
 var i,j:integer;
     Elem:Integer;
 begin
 {если есть что сортировать}
  if left<right
   then
    begin
    {запоминаем указатель на левый и правый сравниваемые элементы}
    i:=left;j:=right;
    {до тех пор пока указатели не пересекутся}
    while i<j do
     begin
      {ищем элемент справа, который был бы меньше, чем элемент слева}
      while (i<j) and (A[j]>=A[i]) do j:=j-1;
      //меняем местами
      Elem:=A[i];
      A[i]:=A[j];
      A[j]:=Elem;
      count:=count+1;
      {ищем эелемнт слева, который был бы больше, элемент справа}
      while (i<j)and(A[j]>=A[i])do i:=i+1;
      //меняем местами
      Elem:=A[i];
      A[i]:=A[j];
      A[j]:=Elem;
     end;
     //сортируем левую часть
     if (i-1)-left<min
      then
     Simple_Choice(A,left,i-1)
      else
     QuickSort(left,i-1);
     //сортируем правую часть
     if right-(j+1)<min
      then
     Simple_Choice(a,j+1,right)
      else
     QuickSort(j+1,right);
end;
end;
begin
QuickSort(1,N);
end;
end.
Вообще сортировки в вирте не плохо описаны, там и сложность алгоритмов указана и скорость относительно друг друга!можно кнута почитать, там по внешним сортировкам кое что есть. 
