c - 排序函数,helpers.c,只列出了几个数字

标签 c sorting

我的排序功能似乎只能重复列出一千个数字中的 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/

相关文章:

c - sys/socket 缺少 msgdr : msg_control, msg_controllen、msg_flags 的成员

c++ - 至少内部名称的前 31 或 63 个字符是有意义的?

java - 我无法理解 Merge Sorted Array 的示例测试用例?

arrays - Powershell带数字的排序对象

mysql - 更新 MySQL 中的排序顺序和插入

c - C中的声明与定义

c - 如何访问映射内存中的位?

排序期间的 Java OutOfMemory

c - MinGW GCC 4.7.0 警告我将 double [][] 传递给 const double(*)[]

excel - 宏到自动排序表