我尝试找出程序的错误,该程序需要n
- 大小的连续出版物和相同数量的元素数字。
使用n = 4
和数字1, 2, 3, 4
,我得到输出:1, 0, 2293428, 1990567906
。
在代码中的某个地方有些东西不是好事,但我开始失去希望找到的地方。有人能够提供一些提示或提供答案吗?
#include <stdio.h>
int T[1000];
void merge(int * a, int ac, int * b, int bc, int * out)
{
int i = 0, j = 0;
while (i < ac && j < bc)
{
if (a[i] < b[j])
*out++ = a[i++];
else
*out++ = b[j++];
}
}
void mergesort(int * t, int n)
{
int m = n / 2;
int out[n];
int i;
if (n < 2)
return;
mergesort(t, m);
mergesort(t + m, n - m);
merge(t, m, t + m, n - m, out);
for (i = 0; i < n; ++i)
t[i] = out[i];
}
int main(int argc, char *argv[])
{
int n;
int i;
scanf("%d", &n);
for (i = 0; i < n; ++i)
scanf("%d", T + i);
mergesort(T, n);
for (i = 0; i < n; ++i)
printf("%d ", T[i]);
return 0;
}
答案 0 :(得分:2)
display: inline-block;
函数错误,您没有考虑.parent
或merge
的某些部分何时有剩余元素。
a