Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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];
}