Cod sursa(job #380989)

Utilizator ScriamTertiuc Afanasie Scriam Data 8 ianuarie 2010 15:22:40
Problema Sortare prin comparare Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.83 kb
Program P1;
type vector=array[1..1000] of integer;
var a : vector;
    n,i : integer;

Procedure swap(a,b : integer);
var t : integer;
begin
t:=a; a:=b; b:=a;
end;

Function part(l,r,pivotIndex : integer) : integer;
var storeIndex,pivotVal,i : integer;
begin
storeIndex:=l;
pivotVal:=a[pivotIndex];
swap(a[pivotIndex],a[r]);
for i:=l to r do
if a[i]<=pivotVal then
begin
swap(a[i],a[storeIndex]);
inc(storeindex);
end;
swap(a[r],a[storeIndex]);
part:=storeindex;
end;

Procedure quicksort(l,r : integer);
var pivotIndex,newpivotIndex : integer;
begin
pivotindex:=l;
if r>l then
begin
newpivotIndex:=part(l,r,pivotIndex);
quicksort(l,newpivotIndex-1);
quicksort(newpivotIndex+1,r);
end;
end;

begin
readln(n);
for i:=1 to n do
read(a[i]);
quicksort(1,n);
for i:=1 to n do
write(a[i],' ');
end.