Cod sursa(job #380993)

Utilizator ScriamTertiuc Afanasie Scriam Data 8 ianuarie 2010 15:25:33
Problema Sortare prin comparare Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.91 kb
Program quicksort;
type vector=array[1..500001] of longint;
var a : vector;
    n,i : longint;
    f,g : text;




Function partitie(s,d : longint) : longint;
var aux,piv,i,j : longint;
begin
   piv:=a[(s+d) div 2];
   i:=s-1; j:=d+1;
   while true do
   begin
      repeat inc(i) until a[i]>=piv;
      repeat dec(j) until a[j]<=piv;
      if i<j then begin aux:=a[i]; a[i]:=a[j]; a[j]:=aux; end
      else
      begin
      partitie:=j;
      exit;
      end;
   end;
end;



Procedure sortare(s,d : longint);
var m : longint;
begin
if (s<d) then
begin
m:=partitie(s,d);
sortare(s,m);
sortare(m+1,d);
end;
end;


begin
assign(f,'algsort.in');
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
close(f);

sortare(1,n);
assign(g,'algsort.out');
rewrite(g);
for i:=1 to n do
write(g,a[i],' ');
close(g);
end.