C:已排序的输入序列号

时间:2015-06-16 21:40:20

标签: c algorithm

我尝试找出程序的错误,该程序需要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;
}

1 个答案:

答案 0 :(得分:2)

display: inline-block;函数错误,您没有考虑.parentmerge的某些部分何时有剩余元素。

a