我在对 2D 动态结构数组进行排序时遇到问题。
我有一个结构:
typedef struct abc
{
int total;
} abc;
还有一个动态二维数组:
list = (abc**)malloc(listSize * sizeof(abc*));
for (int i = 0; i < listSize; i++)
{
list[i] = (abc*)malloc(listSize2* sizeof(abc));
}
我想使用排序算法:
qsort(list, listSize, sizeof list[0], cmp);
以及 qsort 的比较函数:
int cmp(const void *l, const void *r)
{
const abc *a = *(const abc **)l;
const abc *b = *(const abc **)r;
return a[0].total > b[0].total;
}
但问题是,虽然我认为它适用于一个小列表(比如大约 5 个整数),但如果列表稍大一些,它就无法正确排序。我应该对 cmp() 函数做些什么才能使其正常工作?
顺便说一句,我只需要排序,list[x][0]
因为我稍后会添加更多元素。