Cod sursa(job #1142942)

Utilizator adrianbadBadeaAdrian adrianbad Data 14 martie 2014 14:10:17
Problema Sortare prin comparare Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.93 kb
type vec=array[1..100]of longint;
var a,b:vec;
    n,i,j,nr:longint;
    f,q:text;
procedure merge(ls,ld:longint;var nr:longint);
var i,j,m,n,k:longint;
 begin
  if ls<ld then
   begin
    m:=(ls+ld)div 2;
    merge(ls,m,nr);
    merge(m+1,ld,nr);
   end;
  j:=m+1;
  i:=ls;
  k:=ls;
  while (i<=m)and(j<=ld) do
   begin
    if a[i]>=a[j] then
     begin
      b[k]:=a[j];
      inc(j);
     end
    else
     begin
      b[k]:=a[i];
      inc(i);
     end;
    inc(k);
   end;
  while i<=m do
   begin
    b[k]:=a[n];
    inc(i);
    inc(k);
   end;
  while j<=ld do
   begin
    b[k]:=a[n];
    inc(j);
    inc(k);
   end;
  for n:=ls to ld do
   a[i]:=b[i]; 
  nr:=k;
 end;
begin
 assign(f,'algsort.in');
 reset(f);
 assign(q,'algsort.out');
 rewrite(q);
 readln(f,n);
 for i:=1 to n do
  read(f,a[i]);
 merge(1,n,nr);
 for i:=1 to nr-1 do
  write(q,b[i],' ');
 close(f);
 close(q);
end.