Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-03-11 20:24:30.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:sortare.in, sortare.outSursăpreONI 2008, Runda finala
AutorMircea Bogdan PasoiAdăugată dedominoMircea Pasoi domino
Timp execuţie pe test0.1 secLimită de memorie8192 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

Vezi solutiile trimise | Statistici

Sortare

Sortarea rapida (sau quicksort) este un bine cunoscut algoritm de sortare. Algortimul opereaza astfel:

  • Se alege un element din sir, care se va numit pivot
  • Se reordoneaza sirul astfel incat toate elementele care detin o valoare mai mica decat valoarea elementului pivot se vor pozitiona inaintea elementului pivot, si elementele care au o valoare mai mare decat valoarea elementului pivot se vor pozitiona dupa elementul pivot
  • Se sorteaza recursiv cele doua bucati din sir

Cazul de baza a unei recursivitati sunt listele de dimensiune 0 sau 1. Putem descrie in pseudocod acest algoritm astfel:

functie qsort(sir[])
 var stanga, dreapta, pivot
 daca lungimea(sir) <= 1
   returneaza sir
 pivot = un element din sir
 pentru fiecare x din sir
   daca x < pivot atunci insereaza x in stanga
   daca x > pivot atunci insereaza x in dreapta
 returneaza concatenaeza(qsort(stanga), pivot, qsort(dreapta))

Date de intrare

Fisierul de intrare sortare.in ...

Date de iesire

In fisierul de iesire sortare.out ...

Restrictii

  • ... ≤ ... ≤ ...

Exemplu

sortare.insortare.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicatie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?