Sortarea prin selectie directa

          Considerind ca avem un vector de elemente comparabile intre ele si dorim sa le ordonam crescator. Pentru aceasta comparam primul element cu toate elementele care urmeaza dupa el. Daca gasim un element mai mic decit primul atunci le interschimbam pe cele doua. Apoi continuam cu al doilea element al sirului pe care deasemenea il comparam cu toate elementele care urmeaza dupa el si in caz de inversiune interschimbam cele doua elemente. Apoi procedam la fel cu al treilea element al sirului iar procesul continua astfel pina la penultimul element al sirului care evident ca va fi comparat cu ultimul element din sir.

          In urma acestui proces se obtine sirul de elemente ordonat crescator.

          Cind numarul de componente ale vectorului este foarte mare , se poate spune ca ordinul de complexitate timp al algoritmului este O(n2) din cauza ciclurilor for imbricate. Desi nu este o metoda foarte performanta pentru vectori mari totusi ea este intuitiva si usor de implementat.

//Sortare prin selectie

#include<iostream.h>

void main()

{

int i,j,n,aux,a[50];

cout<<"Introduceti numarul de numere din sir";

cin>>n;

cout<<"Introduceti numerele"<<endl;

for(i=0;i<n;i++) cin>>a[i];

//urmeaza algoritmul de sortare;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

   if (a[j]<a[i])

     { aux=a[i]; a[i]=a[j]; a[j]=aux; };

//urmeaza afisarea sirului sortat;

cout<<"Sirul sortat este:"<<endl;

for(i=0;i<n;i++) cout<<a[i]<<" ";

}