Cod sursa(job #1042000)

Utilizator andrei31Andrei Datcu andrei31 Data 26 noiembrie 2013 13:59:27
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.25 kb
var v:array[1..500005] of longint;
n,i:longint;
f,g:text;
function sort2(min,max:longint):longint;
        var piv,aux,i,j:longint;
        k:boolean;
        begin
        piv:=v[min+random(max-min+1)];
        i:=min-1;
        j:=max+1;
        k:=false;
        repeat
                repeat
                        inc(i);
                until v[i]>=piv;
                repeat
                        dec(j);
                until v[j]<=piv;
                if i<j then
                        begin
                        aux:=v[i];
                        v[i]:=v[j];
                        v[j]:=aux;
                        end
                else
                        begin
                        k:=true;
                        sort2:=j;
                        end;
        until k;
        end;
procedure sort(min,max:longint);
         var p:longint;
         begin
         if min<max then
                 begin
                 p:=sort2(min,max);
                 sort(min,p);
                 sort(p+1,max);
                 end;
         end;
begin
assign(f,'algsort.in');
assign(g,'algsort.out');
reset(f);rewrite(g);
read(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.