Pset3排序 - 排序。程序不会通过所有代码行执行

时间:2016-12-22 05:35:28

标签: sorting cs50

我在helper.c中重写了sort函数。该程序已编译,但在运行时,它冻结了。为了简化问题,我将sort函数分离到另一个程序中,并使用一组特定的整数进行排序。但是,执行在排序循环中冻结了。

有人可以帮忙吗?

#include <cs50.h>
#include <stdio.h>

void sort(int values[], int n);

int main(void)
{
    int randoms[] = {5,486,48,89,78,164,57,54,9};
    sort(randoms, 9);
    for(int i = 0; i < 9; i++)
    {
        printf("%i\n", randoms[i]);
    }
}

void sort(int values[], int n)
{
    // TODO: implement an O(n^2) sorting algorithm
    for(int i = 0, counter; i < n - 1; i++)
    {
        counter = 0;
        for(int j = 0, extra; j < n; i++)
        {
            //swap adjacent values in wrong order
            if (values[j] > values[j+1])
            {
                extra = values[j];
                values[j] = values[j+1];
                values[j+1] = extra;
                counter++;
            }
        }
        if (counter == 0)
        break;
    }
    return;
}

1 个答案:

答案 0 :(得分:0)

在你的第二个for循环中,你正在增加错误的变量,它应该是j ++而不是i ++。