Sunteți pe pagina 1din 1

1

STANDARD TEMPLATE LIBRARY


Algoritmi de tip sort (sortare)

Algoritmul sort sorteaz cresctor elementele din secvena [st,fin).
Dup cum observai, trebuie ca iteratorii s permit accesul direct la
elemente. Din acest motiv, se poate utiliza sort pentru vectori, dar nu i
pentru liste. Metoda de sortare este quicksort, deci algoritmul are
complexitatea medie O(nlog(n)).

template <class RandomAccessIterator>
void sort(RandomAccessIterator st, RandomAccessIterator fin);

Exemplu. Se sorteaz cresctor vectorul v:

vector<int> v(6);
v[0]=1;
v[1]=7;
v[2]=5;
v[3]=3;
v[4]=8;
v[5]=5;
sort(v.begin(),v.end());
for (size_t i=0;i<v.size();i++)
cout<<v[i]<<" ";

Mai jos, algoritmul sort este asemntor primului, doar c permite s
introducem drept criteriu de sortare un predicat. Astfel, dac dorim, putem
sorta secvena descresctor:

template <class RandomAccessIterator, class Predicat>
void sort(RandomAccessIterator st, RandomAccessIterator fin,
Predicat p);

Exemplu. Vectorul din exemplul anterior se sorteaz descresctor:

sort(v.begin(), v.end(), greater<int>());





[pentru materialul complet, vezi cartea Complemente de C++,
autori: Vlad Huanu, Tudor Sorin]