Cod sursa(job #240092)

Utilizator FllorynMitu Florin Danut Flloryn Data 6 ianuarie 2009 20:28:53
Problema Sortare prin comparare Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.22 kb
program quick_sort;
type vector=array[1..500000] of longint;
var x:vector;
    n,i:longint;    f,g:text;
procedure quick(s,d:longint);
var a,b,ia,aux:longint;
begin
     a:=s;b:=d;
     repeat
           {parcurgem vectorul de la dreapta spre stanga}
           while x[a]<x[b] do b:=b-1;
           aux:=x[a];{interschimbare}
           x[a]:=x[b];
           x[b]:=aux;
           a:=a+1;ia:=1;
           if a<b then
              begin
                   {parcurgem vectorul de la stanga spre dreapta}
                   while x[a]<x[b] do a:=a+1;
                   if a<>b then
                      begin
                           aux:=x[a];{interschimbare}
                           x[a]:=x[b];
                           x[b]:=aux;
                           b:=b-1;ia:=0;
                      end;
              end;
     until b<=a;
     if s<a-ia then quick(s,a-ia);{autoapel stanga}
     if a-ia+1<d then quick(a-ia+1,d);{autoapel dreapta}
end;
begin
     assign(f,'algsort.in'); reset(f);
     assign(g,'algsort.out'); rewrite(g);
     readln(f,n);
     for i:=1 to n do read(f,x[i]);
     quick(1,n);
     for i:=1 to n do
         write(g,x[i],' ');
     close(f);
     close(g);
end.