Algoritmi
de sortare
A sorta un tablou īnseamnă a rearanja elementele
tabloului astfel īncāt īntre acestea să existe o relaţie de ordine
(crescătoare sau descrescătoare). Un algoritm de sortare este o
metodă prin care se aranjează elementele unui tablou īntr-o ordine
precisă.
| 
   Bubble sort  sau Sortare prin metoda bulelor Exemplu:  Să sortăm crescător vectorul:  {5, 1, 12, 8, 16}  int main() {   int n,i,ok;   int v[50],aux;   cout<<"n= ";   cin>>n;   for(i=0;i<n;i++)              {              
  cout<<"v["<<i<<"]=  ";              
  cin>>v[i];              } do    //Se parcurge şirul de la stānga
  la dreapta īn mod repetat,    {     
  //La fiecare
  parcurgere se verifică succesiv dacă orice două elemente
  vecine sunt ordonate;     ok=0;    for(i=0;i<n-2;i++)        if(v[i]>v[i+1])    // Dacă nu sunt ordonate ele sunt interschimbate;        {                  aux=v[i];                  v[i]=v[i+1];                  v[i+1]=aux;                  ok=1;//marcăm că s-a executat o
  interschimbare              }   }while(ok); 
  // Procedeul se
  repetă pānă cānd se efectuează o parcurgere īn care nu se
  execută interschimbări for(i=0;i<n;i++)              
  cout<<v[i]<<" "; return 0;  }  | 
 
| 
   Sortare prin selectia minimului int main() {  int
  v[50],n,i,min,k,j,aux; cout<<"n=
  ";cin>>n;  for(i=0;i<n;i++)   
  {cout<<"v["<<i<<"]=  ";      cin>>v[i];   }   
  /*Vectorul este īmpărţit īn două părţi
  imaginare - o parte sortată şi o parte nesortată.          La īnceput, partea sortată este
  goală, iar partea nesortată conţine īntreg tabloul. */  for(i=0;i<=n-2;i++)    {min=v[i];      k=i;     for(j=i+1;j<=n-1;j++)          if(v[j]<min)   /*Se execută căutări repetate
  a elementului minim īn partea nesortată.*/            {              min=v[j];              k=j;           }/*La fiecare pas, algoritmul
  găseşte elementul minim din partea nesortată şi īl
  adaugă la finalul părţii sortate.*/             aux=v[k];             v[k]=v[i];             v[i]=aux;     }   for(i=0;i<n;i++)     cout<<v[i]<<"
  ";   return 0;  }  | 
 
| 
   Sortare prin inserţie Vectorul este īmpărţit
  imaginar īn două părţi - o parte sortată şi o parte
  nesortată. La īnceput, partea sortată conţine primul element
  al tabloului şi partea nesortată conţine restul tabloului.  int main(){ int v[50],
  n,i,j,aux;  cout<<"Numarul de elemente din
  vector=";  cin>>n;  cout<<"Vectorul este:";  for(int k=0;k<=n-1;k++)       cin>>v[k];  for(i=1;i<n;i++)/* La fiecare
  pas, algoritmul ia primul element din partea nesortată şi īl
  inserează īn locul potrivit al părţii sortate.*/ // Īncepem sa inseram de la al doilea
  element al vectorului        {/* Cānd partea nesortată nu mai
  are nici un element, algoritmul se opreşte.*/             j=i;             while(j>0&&v[j-1]>v[j])                    { aux=v[j];                         v[j]=v[j-1];                         v[j-1]=aux;                         j--; }        }               cout<<"Vectorul sortat
  este:";  for(k=0;k<=n-1;k++)  cout<<v[k]<<" "; }  |