-3
我寫了以下mergesort
代碼,但它不起作用。你能幫我解決錯誤嗎?合併函數中存在一些問題,因爲它引發了一些地址而不是值。mergesort錯誤
#include<stdio.h>
#include<string.h>
void merge(int *s,int L,int H,int mid)
{
int temp[H-L+1];
int i=L,j=mid+1,k=0;
while((i<=mid)&&(j<=H))
{
if(s[i]<s[j])
{
temp[k] = s[i];
k++;
i++;
}
else
{
temp[k] = s[j];
k++;
j++;
}
}
while(j<=H)
{
temp[k]=s[j];
j++;
k++;
}
while(i<=mid)
{
temp[k] = s[i];
i++;
k++;
}
int x=0;
for(x=0;x<=k-1;x++)
{
s[x+L] = temp[k];
printf("%d\n",s[x+L]);
}
}
void mergesort(int i,int j,int *s)
{
int mid = (i+j)/2;
if(i<j)
{
mergesort(i,mid,s);
mergesort(mid+1,j,s);
merge(s,i,j,mid);
printf("after merging\n");
}
else
{
printf("in the base case\n");
return;
}
}
int main()
{
int str[50];
printf("enter the array\n");
int i,n;
printf("enter n");
scanf("%d",&n);
printf("enter the array\n");
for(i=0;i<n;i++)
{
scanf("%d",&str[i]);
}
for(i=0;i<n;i++)
{
printf("%d",str[i]);
}
mergesort(0,n-1,str);
for(i=0;i<n;i++)
{
printf("%d",str[i]);
}
}
你會得到什麼結果,以及*如何*它不起作用? –
你有一個調試器的上帝,不是嗎?如何通過一個簡單的案例逐步調試? –