这是我写的一个函数,它根据每个数组中索引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;
}
}
}
答案 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移动到数组的末尾 - 就像我上面所描述的那样。