Сложность:
C*n*k, где 2^k<=n, а 2^(k+1)>n
n - количество сортируемых элементов
Наиболее часто используемый метод. Эффективность
и простота в написании делает его алгоритмом сортировки
№1 =)).
Для Borland Pascal 7.0
Olegis, 02.2005
}
var a: array [0..32000] of integer;
n: integer;
buf: text;
procedure inp;
begin
assign(buf, ′input.txt′); reset(buf);
n:=-1;
while not eof(buf) do
begin
inc(n);
readln(buf, a[n]);
end;
close(buf);
end;
procedure outp;
var i: integer;
begin
assign(buf, ′output.txt′); rewrite(buf);
for i:=0 to n do writeln(buf, a);
close(buf);
end;
procedure qsort(l,p: integer);
var i,j,x,s: integer;
label m;
begin
x:=a[(l+p) shr 1];
i:=l;
j:=p;
m:
while a<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
s:=a;
a:=a[j];
a[j]:=s;
inc(i);
dec(j);
goto m;
end
else
begin
if l<j then qsort(l,j);
if i<p then qsort(i,p);
end;
end;