У меня возникли проблемы с сортировкой 2D динамического массива struct.Как отсортировать 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 целых чисел), он не может правильно сортироваться, если список немного больше. Что мне делать с функцией cmp(), чтобы она работала правильно?
Кстати, мне нужно только отсортировать list[x][0]
, так как я добавлю другие элементы позже.
(I'm basing my sorting code from another Stackoverflow post)
См [SSCCE] (http://SSCCE.org/) – wich