te paso esta funcion merge hecha por mi. Fiajte si funciona con esa...
Código C:
Ver originalvoid merge(int *a, int l, int r, int n)
{
int n1 = n-l+1, n2 = r-n, i,j,k;
int b[n-l+2], c[r-n+1];
int t;
b[n1] = c[n2] = 2147483647;
for(i=0;i<n1;i++) b[i] = a[l+i];
for(i=0;i<n2;i++) c[i] = a[n+1+i];
i = j = 0;
for(k=l;k<=r;k++){
if (b[i] <= c[j])
a[k] = b[i++];
else
a[k] = c[j++];
}
return;
}