Cod sursa(job #930507)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 27 martie 2013 18:05:15
Problema Sortare prin comparare Scor 60
Compilator fpc Status done
Runda Arhiva educationala Marime 0.75 kb
var v:array [1..500000] of longint;
    i, j, n, aux:longint;
    f, g:text;
 
procedure qsort (st, dr:longint);
var s, d, m:longint;
  	begin
  	s:=st; d:=dr;
  	m:=st+random(dr-st)+1;
 
  	aux:=v[m]; v[m]:=v[st]; v[st]:=aux;
 
  	while s<d do
    		begin
    		while (v[d]>=aux) and (s<d) do dec (d);
    		v[s]:=v[d];
   		 while (v[s]<=aux) and (s<d) do inc (s);
    		v[d]:=v[s];
    		end;
 
 	 v[s]:=aux;
 
 	 if s-st>1 then qsort (st, s-1);
  	if dr-s>1 then qsort (s+1, dr);
  	end;
 
begin
assign (f, 'algsort.in'); reset (f);
assign (g, 'algsort.out'); rewrite (g);
randomize;
 
read (f, n);
for i := 1 to n do read (f, v[i]);
 
qsort (1, n);
 
for i := 1 to n do write (g, v[i], ' ');
 
close (f); close (g);
end.