我在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;
}
答案 0 :(得分:0)
在你的第二个for循环中,你正在增加错误的变量,它应该是j ++而不是i ++。