void merge(int low,int mid,int high,int a[])
{
int l1=low,l2=mid+1,i,j,b[max+1]={},end=0;
printf("\nmerge start\nl1 = %d l2 = %d low = %d mid = %d high = %d\n",l1,l2,low,mid,high);
for(i=low;end==0;i++) ///confused
{
printf("\nrunning for\ni = %d l1 = %d l2 = %d low = %d mid = %d high = %d\nb = ",i,l1,l2,low,mid,high);
if(a[l1]>=a[l2])
b[i]=a[l2++];
else
b[i]=a[l1++];
end!=(l1<=mid)&&(l2<=high);
//if(l1==l2)
// b[max]=a[l1];
for(j=0;j<max+1;j++)
printf("%d ",b[j]);
printf("\na = ");
for(j=0;j<max+1;j++)
printf("%d ",a[j]);
printf("\n ");
for(j=0;j<low*2;j++)
printf(" ");
printf("^");
for(j=low*2;j<high*2-1;j++)
printf(" ");
printf("^\n");/**/
}
while(l1<=mid)
b[i++]=a[l1++];
while(l2<=high)
b[i++]=a[l1++];
printf("1\n");
for(i=low;i<=high;i++)
a[i]=b[i];
printf("\nending merge\na = ");
for(i=0;i<max+1;i++)
printf("%d ",a[i]);
printf("\n");/**/
}
void sort(int low,int high,int a[])
{
if(low<high)
{
int mid=(low+high)/2;
sort(low,mid,a);
sort(mid+1,high,a);
merge(low,mid,high,a);
}
else
return;
}
아...... 힘들었다
#include<stdio.h>
가 빠졌는데, 혹시#
으로 시작하는 문장을 사용할 때 자동으로 해시태그가 붙는 문제 때문에 사용하지 않으신 건가요? 그리고 어떤 IDE를 사용하시는 지는 모르겠지만, Dev-C++에서 컴파일하니 오류가 꽤 발생하네요... 죄송하지만 제가 C 왕초보라서 저도 이게 무슨 오류인지 모르겠어요 ㅠㅠ 변수가 정의되지 않은 것 같긴 한데요...