Fusione di 2 array ordinati

Ipotesi

  1. v1 è ordinato
  2. v2 è ordinato
  3. v3 è dimensionato per poter contenere n1+n2 elementi
void fusione(int *v1, int n1, int *v2, int n2, int *v3, int *n3)
{
   int i1=0, i2=0, i3=0;   
   *n3=n1+n2;
   
   while(i1 < n1 && i2 < n2)
   {
      if(v1[i1] <= v2[i2])
      {
         v3[i3]=v1[i1];
         i1++;
      }
      else
      {
         v3[i3]=v2[i2];
         i2++;
      }
      i3++;
   }
   while(i1 < n1)
   {
      v3[i3]=v1[i1];
      i1++;
      i3++;
   }
   while(i2 < n2)
   {
      v3[i3]=v2[i2];
      i2++;
      i3++;
   }
}