Cod sursa(job #697303)

Utilizator mada0222Tomus Madalina mada0222 Data 29 februarie 2012 00:52:36
Problema Sortare prin comparare Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.33 kb
program sss;
type vect=array[1..50000] of longint;
var f,g:text;
    n,i:longint;
    a:vect;
procedure merge(st,sf,m:longint);
var k,i,j:longint;
b:vect;
  begin
  i:=st;
  j:=m+1;
  k:=1;
    while (i<=m) and (j<=sf) do
      begin
        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;
  if i<=m then
    for j:=i to m do
      begin
      b[k]:=a[j];
      k:=k+1;
      end
      else
    for i:=j to sf do
      begin
      b[k]:=a[i];
      k:=k+1;
      end;
    k:=1;
      for i:=st to sf do
        begin
          a[i]:=b[k];
          k:=k+1;
        end;
  end;
procedure sort(st,sf:longint);
var aux,m:longint;
begin
  if (sf-st)<=1 then
     begin
       if a[st]>a[sf] then
         begin
         aux:=a[st];
         a[st]:=a[sf];
         a[sf]:=aux;
         end;
     end
     else
     begin
      m:=(st+sf) div 2;
      sort(st,m);
      sort(m+1,sf);
      merge(st,sf,m);
     end;
end;
begin
assign(f,'algsort.in'); reset(f);
assign(g,'algsort.out'); rewrite(g);
  readln(f,n);
    for i:=1 to n do
      read(f,a[i]);
    sort(1,n);
    for i:=1 to n do
      write(g,a[i],' ');
close(f);
close(g);
end.