Search This Blog

Tuesday, May 15, 2012

C++: Functia “sort”, cea mai rapida metoda de sortare a vectorilor

Pana acum cunoastem ca metoda de sortare a vectorilor bubble sort-ul, adica algoritmul cu for in for sau cel cu do while, dar astazi vreau sa va arat o functie care sorteaza vectorii, reprezentand  si cea mai rapida metoda posibila si cea mai scurta din punct de vedere al codului.
Aceasta functie se numeste sort si face parte din biblioteca <algorithm>. Iata-i codul in program pentru cazul ordonarii crescatoare a vectorului “v” cu “n” elemente, care a fost citit incepand cu pozitia 0:
sort(v, v+n);
In cazul in care scrierea in vector se incepe de pe pozitia 1, apelarea functiei va arata astfel:
sort(v+1, v+n+1);
Poate ca acum ma veti intreba cum se realizeaza ordonarea descrescatoare. Ei bine, pentru aceasta mai trebuie definita de catre utilizator urmatoarea functie (pentru a afla cum se defineste o functie vezi articolul: Functii definite de catre utilizator) :
bool  descr(<tip> a, <tip> b)
{




return a>b;
}
Iar apoi, in programul principal, functia sort va avea urmatoarea structura de apelare, pentru vectorul “v” cu “n” elemente, in care scrierea s-a inceput de pe elementul 1 (pentru 0 se copiaza primii 2 parametrii exact ca in cazul cu 0 prezentat anterior, al treilea parametru ramanand nemodificat):
sort(v+1, v+n+1, descr);
In concluzie, functia sort ar trebui invatata, dovedindu-se extrem de utila la olimpiada si concursuri, iar sintaxa este destul de simpla.