Cos tu jest nie tak, tylko nie wiem co.
z gory dzieki za pomoc
void sort_merge(int t[], int p, int r){
if (p<r){
int q= (p+r)/2;
sort_merge(t,p,q);
sort_merge(t, q+1, r);
merge(t,p,q,r);}
}
////////////////////////////////////////
void merge(int t[], int p, int q, int r){
int a=q-p+1;
int b=r-q;
int L[a+1], R[b+1];
int i,j;
for (i=0; i<a; ++i)
L[i]=t[p+i];
for (j=0; j<b; ++j)
R[j]=t[q+j];
L[a]=-1;
R[b]=-1;
i=0, j=0;
int k;
for (k=p; k<r; ++k){
if (L[i]<=R[j])
t[k]=L[i++];
else
t[k]=R[j++];
}
}