どこが原因なのでしょうか、、?
http://i.imgur.com/6CVy88x.png (問題)
#include <stdio.h>
void mSort (int date[ ], int tmp[ ], int left, int right)
{
if( right <= left ) return ;
int mid = ( left + right)/2;
mSort ( date , tmp , left , mid);
mSort ( date , tmp , mid+1, left);
merge( date , tmp, left , mid , right );
}
void merge( int date [ ], int tmp [ ], int left , int mid , int right)
{
int tmpNo = left;
while( left<=mid && mid+1<=right) /*左の数列が空でない && 右の数列が空でない*/
{
if( date[left] <= date[mid+1]) /*左列の先頭の要素 <= 右列の先頭の要素*/
{
tmp[tmpNo]=date[left];
tmpNo = tmpNo + 1;
left = left+1;
}
else
{
tmp[tmpNo] = date[mid + 1];
tmpNo = tmpNo + 1;
mid+1 = mid +1+1;
}
}
if ( left >= mid) /*左列が空である*/
{
while( mid+1 < right)
{
tmp[tmpNo] = date[mid+1];
tmpNo = tmpNo + 1;
mid+1 = mid +1+1;
}
}
else /*右列が空*/
{
while ( left < mid )
{
tmp[tmpNo]=date[left];
tmpNo = tmpNo + 1;
left = left+1;
}
}
}
int main(void)
{
int date[ ] = {1,4,2,7,4,9,1,2,5,3,9,0,4,3,1,2}; /*適当に設定*/
int tmp[ ];
int left = 0;
int right = 15;
int i ;
mSort (date , tmp , left , right);
for (i=0 ; i < light ; i++)
printf("x[%d] = %d\n", i , date[i]);
return (0) ;
}