我在排序二維動態結構數組時遇到問題。如何排序結構的二維動態數組
我有一個結構:
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]
,因爲我將在稍後添加更多元素。
(I'm basing my sorting code from another Stackoverflow post)
參見[SSCCE(http://SSCCE.org/) – wich