Я сделал функцию сравнения для qsort, и она вызывает ошибку сегментации.
почему это происходит и как это исправить?
example my two arrays are:
G->grades = [2,3,3,2,2,2]
G->order = [0,2,3,4,5,6]
Я хочу отсортировать G-> order, используя значения G-> grades. Таким образом, вывод должен быть:
G->order = [2,3,0,4,5,6]
u32* vert_grades;
char OrdenWelshPowell(Grafostv* G)
{
vert_grades = G->grades;
qsort(G->order, G->n, sizeof(u32), comp_grades);
return 0;
}
int comp_grades(const void *v1, const void *v2) {
u32 degree1 = vert_grades[*(const u32 *)v1 - 1];
u32 degree2 = vert_grades[*(const u32 *)v2 - 1];
printf("degree2: %u\n", vert_grades[*(const u32 *)v2 - 1]);
if (degree1 > degree2)
{
return -1;
}
else if (degree1 < degree2)
{
return 1;
}
else
{
return 0;
}
}
pd: на данный момент я не хочу заказывать оценки G->