Pagini recente » Cod sursa (job #1134452) | Cod sursa (job #1757902) | Cod sursa (job #2551272) | Cod sursa (job #593243) | Cod sursa (job #296081)
Cod sursa(job #296081)
Program Algsort;
var n : longint;
A,B : array[1..500000] of longint;
procedure Citeste;
var Intrare : text;
i : longint;
begin
assign(Intrare,'algsort.in');
reset(Intrare);
readln(Intrare,n);
for i:=1 to n do read(Intrare,A[i]);
close(Intrare);
end;
procedure Interclasare(i1,i2,i3 : longint);
var i,j,k : integer;
begin
i:=i1;
j:=i2+1;
k:=i1;
while (i<=i2) or (j<=i3) do begin
if i>i2 then begin
B[k]:=A[j];
j:=j+1;
end
else
if j>i3 then begin
B[k]:=A[i];
i:=i+1;
end
else
if A[i]<A[j] then begin
B[k]:=A[i];
i:=i+1;
end
else begin
B[k]:=A[j];
j:=j+1;
end;
k:=k+1;
end;
for i:=i1 to i3 do A[i]:=B[i];
end;
procedure MergeSort(i1,i2 : longint);
var mij : longint;
begin
if i2>i1 then begin
mij:=(i1+i2) div 2;
MergeSort(i1,mij);
MergeSort(mij+1,i2);
Interclasare(i1,mij,i2);
end;
end;
procedure Scrie;
var Iesire : text;
i : longint;
begin
assign(Iesire,'algsort.out');
rewrite(Iesire);
for i:=1 to n do write(Iesire,A[i],' ');
close(Iesire);
end;
begin
Citeste;
MergeSort(1,n);
Scrie;
end.