Sunteți pe pagina 1din 3

Metode de sortare a unui

vector
Sortarea unui vector
Așa cum ați învățat , vectorii vă permit să păstrați valori corelate de același tip.Cum
programele dumneavoastră lucrează cu vecotori , uneori programele dumneavoastră vor
trebui să sorteze valorile unui vector, fie de la cea mai mică la cea mai mare(ordine
ascendentă). Fie de la cea mai mare la cea mai mică(ordine descendentă).Programele pot
utiliza algoritmi diferiți de sortare pentru a sorta vectorul, inclusiv sortarea prin metoda
bulelor(Bubble Sort), sortarea selectivă(Selection Sort) și sortarea rapidă(Quick Sort). În
cele ce urmează vă vom prezenta fiecare dintre algoritmii menționați mai devreme.

Sortarea prin metoda bulelor


Algoritmul de sortare prin metoda bulelor este o tehnică simplă de sortare a
vectorilor care este , de obicei, prima metodă pe care o învață cei mai mulți programatori.
Datorită simplități sale , sortarea prin metoda bulelor nu este foarte eficentă și ia mai
mult timp de procesare decât oricare altă metodă de sortare. Dacă însă aveți de sortat un
vector cu 30 de elemente sau mai puține , utilizarea sortării prin metoda bulelor este
potrivită.Presupunând că sortați valorile de la cea mai mică la cea mai mare, sortarea
pun metoda bulelor ciclează printre valorile vectorului , comparând și deplasând valorile
cele mai mari ale matricei în partea de sus(cum ies bulele la supratața apei).Figura de mai
jos ilustrează cum funcționează sortarea prin metoda bulelor.

Următorul program ,utilizează sortarea prin metoda bulelor pentru a sorta un vector
care conține 30 de elemente.
void main()
{
int val[30], i,j,aux;
for(i=0; i<30;i++)
cin>>val[i];
for(i=0;i<30;i++)
for(j=0;j<30;j++)
if(val[i]<val[j])
{
aux = val[i];
val[i] = val[j];
val[j] = aux;
}
for(i=0;i<30;i++)
cout<<val[i]<<' ';
}
Sortarea selectivă
Sortarea selectivă este un algoritm simplu de sortare similar cu sortarea prin
metoda bulelor. La fel ca sortarea prin metoda bulelor, programele trebuie să utilizeze
sortarea selectivă pentru vectorii mici(cel mult 30 de elemente). Sortarea selectivă
începe prin selectarea unui element al vectorului (ca de exemplu primul
element).Sortarea caută apoi în întregul vector până găsește valoarea minimă .Sortarea
plasează valoarea minimă în primul element , selectează al doilea element si caută cea de
a doua valoare minimă din cele rămase.

Următorul program ,utilizează sortarea selectivă pentru a sorta un vector care


conține 30 de elemente.
void main()
{
int val[30], i,j,aux;
for(i=0; i<30;i++)
cin>>val[i];
for(i=0;i<30;i++)
for(j=i+1;j<30;j++)
if(val[i]<val[j])
{
aux = val[i];
val[i] = val[j];
val[j] = aux;
}
for(i=0;i<30;i++)
cout<<val[i]<<' ';
}

Sortarea rapidă
Pe măsură ce numărul de elemete al vectorilor crește, sortare rapidă devine una
dintre cele mai rapide tehnici de sortare pe care programele pot să o utilizeze.Sortarea
rapidă consideră vectorul ca pe o listă de valori. Când începe sortarea , ea selectează
valoarea de mijoc a listei ca separator de listă. Sortarea împarte apoi lista în două liste,
una cu valorile mai mici decât separatorul de listă și o a doua ale cărei valori sunt mai
mari sau egale cu separatorul de listă. Sortarea se invocă apoi recursiv în amele liste. La
fiecare invocare, ea împarte elementele în liste mai mici. Sortarea rapidă folosește
metoda Divide et Impera.
Următorul program ,utilizează sortarea rapidă pentru a sorta un vector care
conține 100 de elemente.
void qs(int a[100],int prim , int ultim)
{
int aux , min, max , separator_lista;
min = prim;
max = ultim;
separator_lista = a[(prim+ultim)/2];
do
{
while(a[min]<separator_lista) ++min;
while(a[max]>separator_lista) ++max;
if(min <= max)
{
aux = a[min];
a[min++] = a[max];
a[max--] = aux;
}
}while(min <= max);
if(prim < max) qs(a,prim,max);
if(min < ultim) qs(a,min,ultim);
}
void main()
{
int a[100], i;
for(i=0;i<100;++i)
cin>>a[i];
qs(a,0,99);
for(i=0;i<100;++i)
cout<<a[i];
}

S-ar putea să vă placă și