2D 動的構造体配列のソートに問題があります。
私は構造体を持っています:
typedef struct abc
{
int total;
} abc;
そして、動的な 2D 配列:
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 int など) では機能すると思いますが、リストが少し大きいと正しくソートできないことです。cmp() 関数が正しく動作するようにするにはどうすればよいですか?
ちなみに、list[x][0]
後で要素を追加するので、並べ替えるだけで済みます。