我的排序功能似乎只能重复列出一千个数字中的 3 个。不知道为什么。有什么想法吗?
我的排序数组从这里开始。我创建了一个遍历 n 个数字的 for 循环。然后我比较这些值并创建一个交换算法。我假设我的交换算法有缺陷。
/**
* Sorts array of n values.
*/
void sort(int values[], int n)
{
//TODO: implement an O(n^2) sorting algorithm
for (int i = 0; i < n - 1; i++)
{
if (values[i] < values[i + 1])
{
int holder = values[i];
values[i] = holder;
values[i + 1] = values[i];
values[i] = holder;
printf("%i\n", values[i]);
}
}
return;
}
最佳答案
以下几行存在逻辑错误:
int holder = values[i];
values[i] = holder;
values[i + 1] = values[i];
values[i] = holder;
我假设您想交换 values[i]
和 values[i+1]
的值。
您没有在该代码中的任何位置提取 values[i+1]
的值以将其分配给 values[i]
。
你需要使用:
int holder = values[i];
values[i] = values[i + 1];
values[i + 1] = holder;
关于c - 排序函数,helpers.c,只列出了几个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879668/