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;
Другие вопросы по тегам