Interclasarea a doi vectori(sortati crescator)



#include <iostream>

using namespace std;

int main()
{
   //elementele trebuie sa fie ordonate crescator in cei doi vectori
   int n, a[11];
   cin>>n;
   for(int i=1;i<=n;i++)
      cin>>a[i];
   int m, b[11];
   cin>>m;
   for(int i=1;i<=m;i++)
      cin>>b[i];
   //ne vom lua un al treilea vector in care le vom interclasa
   int c[21];
   int k=0; //cu ajutorul acestei variabile vom pune elementele in vector
   int i=1, j=1;
   //vom parcurge simultan cei doi vectori si vom compara elementele
   while(i<=n && j<=m)
   {
      if(a[i]<b[j]) //punem cel mai mic element dintre cele doua
      {
         k++;
         c[k]=a[i];
         i++;
      }
      else
      {
         k++;
         c[k]=b[j];
         j++;
      }
   }
   // exista posibilitate sa terminam elementele dintr-un vector, iar din altul nu
   while(i<=n) //cat timp mai avem elemente in vectorul a[]
   {
      k++;
      c[k]=a[i];
      i++;
   }
   while(j<=m) //cat timp mai avem elemente in vectorul b[]
   {
      k++;
      c[k]=b[j];
      j++;
   }
   // afisam vectorul obtinut
   for(i=1;i<=k;i++)
      cout<<c[i]<<' ';
}

Explicatie:

- citim cei doi vectori, pe rand
- ne vom lua un al treilea vector in care vom adauga cate un element, comparand in paralel elementele celor doi vectori si adaugam cel mai mic dintre doua elemente la un moment dat
- cu ajutorul variabile i vom parcurge primul vector, iar cu j vom parcurge cel de-al doilea
- in momentul in care vom adauga un element dintr-un vector, vom creste si indicele corespunzator
- la final, vom verifica daca ne-au mai ramas elemente in unul din vectori, iar daca raspunsul este afirmativ le vom adauga in cel de-al treilea vector