C 合并排序错误

C 合并排序错误,c,runtime-error,mergesort,C,Runtime Error,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)) {

我已经写了以下
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]);
    }


}
#包括
#包括
无效合并(int*s、int L、int H、int mid)
{
内部温度[H-L+1];
int i=L,j=mid+1,k=0;

而在合并的最后一个循环中((i错误):

for(x=0;x<=k-1;x++)            // (I would use x<k instead of x<=k-1)
{
    s[x+L] = temp[k];          // Should be temp[x] not temp[k]
    printf("%d\n",s[x+L]);
}

for(x=0;x)你得到了什么结果,它怎么不起作用?你有一个调试器,不是吗?通过一个简单的案例一步一步地调试怎么样?非常感谢你的帮助。。。。