无法进入“if”条件。为什么?

时间:2017-04-24 19:05:58

标签: c arrays sorting pointers if-statement

这是我写的一个函数,它根据每个数组中索引0处的数字对一些数组进行排序 - 因为在每个数组中,索引0处的数字等于数组中的数字量(长度)。 它永远不会进入简单的“if”语句,即使它应该是因为第一个数组中索引0处的数字大于第二个数组中索引0处的数字。

    void orderSorting(int ** parr,int rows)
    {
        int i, *temp;
        for (i = 0; i < rows-1; i++)
        {
            if (parr[i][0] > parr[i + i][0])
            {
                temp = *(parr + i + 1);
                *(parr + i + 1) = *(parr + i);
                *(parr + i) = temp;
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

if (parr[i][0] > parr[i + i][0])

应该是

 if (parr[i][0] > parr[i + 1][0])

基于里面的代码看起来就像你想要做的那样

答案 1 :(得分:0)

除了i + i错误 - 这是冒泡排序,但只是第一轮。

你没有排序,只是将最大的元素移动到最后...你必须一次又一次地重复这个循环,每次将循环的结束减少一个(直到只剩下两个元素进行比较) 。但是,冒泡排序是效率最低的排序算法之一,我建议您更好地查看更好的搜索算法(例如quicksort)。

编辑:

  

我刚刚意识到我打算写1而不是我....这是一个愚蠢的错误哇

这与您在问题中提供的输出相匹配 - 并查看那里 - 5移动到数组的末尾 - 就像我上面所描述的那样。