【发布时间】:2017-12-06 12:21:50
【问题描述】:
所以,我在这里想要实现的是在 2d 数组中使用 qsort 的 C 实现,我只希望根据其第一个元素对行进行排序,例如:
int arr[3][2]={{65,1},
{45,2},
{66,3}}
我希望输出是:
int arr[3][2]={{45,2},
{65,1},
{66,3}}
有没有办法在不自己实现快速排序的情况下做到这一点?如果有,怎么做?
编辑
这是我的代码的样子:
int f(int a, int b)
{
return a-b;
}
qsort(arr[0],3,sizeof(int),f);
【问题讨论】:
-
你必须表现出你的努力。
-
使用 stdlib.h 中的
qsort()? -
对不起,我说的不够清楚,我觉得现在可以理解了...
-
您确实提供了正确数量的元素:
3。您没有提供正确的元素大小:sizeof (int)。当您想要对数组进行排序时,您必须提供这些数组的大小:sizeof (int[2])。我没有检查(也不记得)这是否是正确的语法,但2 * sizeof (int)也应该这样做。顺便提一句。您的f无法对(子)数组进行排序。有什么理由将arr[0]作为第一个参数(而不是arr)?不过,我想这应该没什么区别...... -
好吧,我只希望它比较第一个元素,所以我只给它 arr[0],但现在让我试试