Cod sursa(job #331419)

Utilizator ionutz32Ilie Ionut ionutz32 Data 13 iulie 2009 21:52:49
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.24 kb
var v:array[1..500000] of longint;
n,i,m,piv,j,aux:longint;
f,g:text;
k:boolean;
function sort2(min,max:longint):longint;
         begin
         m:=min+(max-min) div 2;
         piv:=v[m];
         i:=min-1;
         j:=max+1;
         k:=true;
         repeat
               repeat
                     i:=i+1;
               until v[i]>=piv;
               repeat
                     j:=j-1;
               until v[j]<=piv;
               if i<j then
                  begin
                  aux:=v[i];
                  v[i]:=v[j];
                  v[j]:=aux;
                  end
               else
                   begin
                   k:=false;
                   sort2:=j;
                   break;
                   end;
         until k=false;
         end;
procedure sort1(min,max:longint);
          var p:longint;
          begin
          if min<max then
             begin
             p:=sort2(min,max);
             sort1(min,p);
             sort1(p+1,max);
             end;
          end;
begin
assign(f,'algsort.in');
assign(g,'algsort.out');
reset(f);rewrite(g);
readln(f,n);
for i:=1 to n do
    read(f,v[i]);
sort1(1,n);
for i:=1 to n do
    write(g,v[i],' ');
close(f);close(g);
end.