C 合并排序中的错误
你们能帮我弄一下这个密码吗。我知道这是基本的,但我现在真的被它迷住了。我试图实现一个非常简单的mergesort版本,但是输出完全错误。请尝试修复此代码,而不是编写全新的代码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-
#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
对于变量名来说是一个糟糕的选择,它是一个。这看起来是一个家庭作业。我们不是为此而来的。你尝试了什么?什么没有特别起作用?你尝试过使用调试器吗?