Merge sort 질문이요
모은
질문 제목 :
merge sort
질문 요약 :
어디가 잘못 된거죠???질문 내용 :
코드를 짰는데 출력이 값이 안나오고 모두 똑같은 값 -88912312 이렇게 출력 되네요.ㅠ.ㅠ
어디가잘못 됐을까요??#includestdio.h
void mergesort(int n,int s[]);
void merge(int h,int m, const int u[],const int v[],int s[]);
int main(void)
{
int data[]={27,10,12,20,25,13,15,22};
int num=sizeof(data)/sizeof(int);
mergesort(num,data);
for(int i=0;isizeof(data)/sizeof(int);i++)
printf(%d\n,data[i]);
return 0;
}
void mergesort(int n,int s[])
{
if(n1)
{
const int h= n/2;
int i;
const int m=n-h;
int u[100],v[100];
for(int i=1;i=h;i++)
{
u[i]=s[i];
}
for(int i=1;i=m;i++)
{
v[i]=s[h+i];
}
mergesort(h,u);
mergesort(m,v);
merge(h,m,u,v,s);
}
}
void merge(int h,int m, const int u[],const int v[],int s[])
{
int i=1,j=1,k=1;
while(i=h&&j=m)
{
if(u[i]v[j]){
s[k]=u[i];
i++;
}
else{
s[k]=v[j];
j++;
}
k++;
}
if(ih)
{
for(int a=k;a=(h+m);a++)
s[a]=u[j];
}
else
{
for(int a=k;a=(h+m);a++)
s[a]=u[i];
}
}