qsort не вносит никаких изменений в массив целых чисел
Я использую qsort для сортировки массива целых чисел. Но qsort не вносит никаких изменений в массив. Моя функция сравнения выглядит следующим образом:
int mycomp(const void *a, const void *b){
int *a1 = (int*)a;
int *b1 = (int*)b;
if ( a1 < b1 )
return -1;
else if ( a1 == b1 )
return 0;
else
return 1;
}
Массив содержит:
pos[M] = {40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 5, 10, 15, 20, 15, 30, 35};
И я назвал qsort как:
qsort(pos, M, sizeof(int), mycomp);
На выходе получается точно такой же массив. Кто-нибудь может мне помочь, пожалуйста!
1 ответ
Решение
Вы сравниваете указатель, а не значения.
исправить:
int a1 = *(int*)a;
int b1 = *(int*)b;