من این برنامه را بکمک دوستم نوشتم که از یک روش دیگه انجام شده.اول لیست رو سه قسمت می کنیم بعد دوتا دوتا merge کنیم. تابع merge همان چیزیه که برای دوتایی بکار می ره.درست جواب میده.


void msort (int start, int end) {
int sols;
if (begin < end)
sols= ceil((end-strat+1)/3);
msort(start,strat+sols-1 );// recursive functuion
msort(start+sols,start+2sols-1 ); // recursive functuion
msort(start+2sols,end); // recursive functuion
merge(start,start+sols-1,start+2sols-1);
merge(start,start+2sols-1,end);
}


:موفق: