Pagini recente » Cod sursa (job #2162556) | Cod sursa (job #2430770) | Cod sursa (job #2076821) | Cod sursa (job #1914720) | Cod sursa (job #895725)
Cod sursa(job #895725)
program merge_sort;
var f,g:text;
n,i:longint;
v,b:array[1..500000] of longint;
bufin,bufout:array[1..65000] of byte;
procedure interclasare (st,dr,mijloc:longint);
var k,i,j,k1:longint;
begin
i:=st; j:=mijloc+1;
k:=0;
while (i<=mijloc) and (j<=dr) do
begin
if v[i]<v[j] then
begin
inc(k); b[k]:=v[i]; inc(i);
end
else
begin
inc(k); b[k]:=v[j]; inc(j);
end;
end;
for k1:=i to mijloc do
begin
inc(k); b[k]:=v[k1];
end;
for k1:=j to dr do
begin
inc(k); b[k]:=v[k1];
end;
k:=0;
for i:=st to dr do
begin
inc(k);
v[i]:=b[k];
end;
end;
procedure sort (st,dr:longint);
var mijloc:longint;
aux:longint;
begin
if dr-st<=1 then
begin
if v[st]>v[dr] then
begin
aux:=v[st]; v[st]:=v[dr]; v[dr]:=aux;
end;
end
else
begin
mijloc:=(st+dr) div 2;
sort(st,mijloc);
sort(mijloc+1,dr);
interclasare (st,dr,mijloc);
end;
end;
begin
assign (f,'algsort.in'); reset (f);
assign (g,'algsort.out'); rewrite (G);
settextbuf (f,bufin);
settextbuf (g,bufout);
readln (f,n);
for i:=1 to n do
read (f,v[i]);
sort(1,n);
for i:=1 to n do
write (g,v[i],' ');
close (F); close (g);
end.