Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 合并排序中的错误_C_Algorithm_Sorting - Fatal编程技术网

C 合并排序中的错误

C 合并排序中的错误,c,algorithm,sorting,C,Algorithm,Sorting,你们能帮我弄一下这个密码吗。我知道这是基本的,但我现在真的被它迷住了。我试图实现一个非常简单的mergesort版本,但是输出完全错误。请尝试修复此代码,而不是编写全新的代码 #include <stdio.h> void merge_them(int a[], int l, int m, int r) { int i=l, j=m+1; int final[r-l+1]; int p=0; for(int k=0; k<=r-

你们能帮我弄一下这个密码吗。我知道这是基本的,但我现在真的被它迷住了。我试图实现一个非常简单的mergesort版本,但是输出完全错误。请尝试修复此代码,而不是编写全新的代码

#include <stdio.h>
void merge_them(int a[], int l, int m, int r)
{
    int i=l, j=m+1;
    int final[r-l+1];
    int p=0;
        
    for(int k=0; k<=r-l+1; k++)
    {
        if(a[i]<a[j])
        {
            final[p]=a[i];
            i++;
            p++;    
        }
            
        else if(a[i]>=a[j])
        {
            final[p]=a[j];
            j++;
            p++;
        } 
    }
        
    j=0;
    for( i=l; i<r+1; i++)
    {
        a[i]=final[j];
        j++;
    }
}
    
void merge(int a[], int l, int r)
{ 
    if(l<r)
    {   
        int m = (l+r)/2;
        merge(a,l,m);
        merge(a,m+1,r);
        merge_them(a,l,m,r);   
    }    
}
    
int main()
{
    int a[10] = {10,9,8,7,6,5,4,3,2,1};
       
    merge(a,0,9);
       
    for(int i=0; i<10; i++)
        printf("%d ",a[i]);  
}
#包括
无效合并它们(int a[],int l,int m,int r)
{
int i=l,j=m+1;
int final[r-l+1];
int p=0;

对于(int k=0;k而言,实际上有三个错误:


  • 条件
    k“但输出都是错误的。”请更具体一些。描述一些输入、程序输出和预期输出。添加大量单元测试,然后将调试器附加到失败的单元测试:-)不相关,
    final
    对于变量名来说是一个糟糕的选择,它是一个。这看起来是一个家庭作业。我们不是为此而来的。你尝试了什么?什么没有特别起作用?你尝试过使用调试器吗?