Цитата:
Сообщение от Stud555
А есть ли алгоритмы быстрее Шелла? Нужно сортировать по одному полю. Вида 56.012345678
|
Конечно есть. Сложность алгоритма Шелла - О(n*log^2(n)), алгоритм быстрой сортировки имеет сложность О(n*log(n)). Уже на 10000 элементов скорость его работы должна быть больше.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | procedure quicksort( var a: list; Lo,Hi: integer );
procedure sort(l,r: integer );
var
i,j,x,y: integer ;
begin
i:=l; j:=r; x:=a[random(r-l+ 1 )+l];
repeat
while a[i]<x do i:=i+ 1 ;
while x<a[j] do j:=j- 1 ;
if i<=j then
begin
if a[i] > a[j] then
begin
y:=a[i]; a[i]:=a[j]; a[j]:=y
end ;
i:=i+ 1 ; j:=j- 1
end ;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r)
end ;
|