Pagini recente » Cod sursa (job #2332028) | Cod sursa (job #424970) | maricei1 | Cod sursa (job #1265983) | Cod sursa (job #543769)
Cod sursa(job #543769)
var a:array[0..500000] of longint;
n,i:longint;
f1,f2:text;
procedure interclas(i,m,j:longint);
var x,y,k,t:longint;
b:array[0..250001] of longint;
begin
x:=i;
k:=1;
y:=m+1;
while (x<=m)and(y<=j) do
if a[x]<a[y] then
begin
b[k]:=a[x];
inc(x);
inc(k);
end
else
begin
b[k]:=a[y];
inc(y);
inc(k);
end;
while x<=m do
begin
b[k]:=a[x];
inc(k);
inc(x);
end;
while y<=j do
begin
b[k]:=a[y];
inc(k);
inc(y);
end;
t:=1;
x:=i;
while t<k do
begin
a[x]:=b[t];
inc(x);
inc(t);
end;
end;
procedure divide(i,j:longint);
var m:longint;
begin
if i<j then
begin
m:=(i+j) div 2;
divide(i,m);
divide(m+1,j);
interclas(i,m,j);
end;
end;
begin
assign(f1,'algsort.in');
assign(f2,'algsort.out');
reset(f1);
rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
divide(1,n);
for i:=1 to n do
write(f2,a[i],' ');
close(f2);
end.