سلام،

مشکلی که در اجرا نشدن برنامه اریه شده از طرف من وجود دارد، همین آرایه کمکی است. در زیر برنامه داده شده نتیجه بلافاصله در آرایه مبدا ذخیره می شود و این مساله باعث از بین رفتن داده های اولیه می گردد.

احتمالا کد زیر درست کار کند.

void merge(s1,e1,s2,e2,s3,e3,sr) 
{
int i=0,j=0,k=0;
int* temp;
temp=new int[e1-s1+e2-s2+e3-s3+3];
for(int l=0;l++;l<e1-s1+e2-s2+e3-s3+3)
{
if(i<e1-s1+1)
if(a[s1+i]>a[s2+j] && a[s1+i]>a[s3+k])
{
temp[l]=a[s1+i];
i++;
}
if(j<e2-s2+1)
if(a[s2+j]>a[s1+i] && a[s2+j]>a[s3+k])
{
temp[sr+l]=a[s2+j];
j++;
}
if(k<e3-s3+1)
if(a[s3+k]>a[s1+i] && a[s3+k]>a[s2+j])
{
temp[sr+l]=a[s3+k];
k++;
}
}
for(l=sr;l<sr+e1-s1+e2-s2+e3-s3+3;l++)
a[l]=temp[l-sr];
delete[] temp;
}