Cod sursa(job #293594)

Utilizator SprzlAbcdefg Sprzl Data 1 aprilie 2009 22:25:44
Problema Sortare prin comparare Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 0.86 kb
program qsort;
var a:array [1..500000] of longint;
    i,n:longint;

function partition(p,q:longint):longint;
var aux,r,j:longint;
begin
  randomize;
  r:=p+random(q-p+1);
  aux:=a[p];
  a[p]:=a[r];
  a[r]:=aux;
  i:=p;
  for j:=p+1 to q do
    if a[j]<=a[p] then
    begin
      inc(i);
      aux:=a[i];
      a[i]:=a[j];
      a[j]:=aux;
    end;
  aux:=a[p];
  a[p]:=a[i];
  a[i]:=aux;
  partition:=i;
end;

procedure quicksort(p,q:longint);
var r:longint;
begin
  if p<q then
  begin
    r:=partition(p,q);
    quicksort(p,r-1);
    quicksort(r+1,q);
  end;
end;

begin
  assign(input,'algsort.in');
  reset(input);
  assign(output,'algsort.out');
  rewrite(output);

  readln(n);
  for i:= 1 to n do
    read(a[i]);

  quicksort(1,n);

  for i:=1 to n do
    write(a[i],' ');

  close(input);
  close(output);
end.