Задать вопрос
vs_convoy
@vs_convoy

Как отсортировать массив double с помощью qsort?

qsort(array, size, sizeof(double), compare);

int compare (const void *a, const void *b){
return (*(double*)a - *(double*)b);
}

Массив на 10 000, подскажите почему не сортирует нормально дробную часть, целую часть в общих чертах сортирует но с множеством ошибок?
  • Вопрос задан
  • 1090 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
rhaport
@rhaport
Проблема в том, что Вы приводите разницу двух double к int, если она маленькая, то компаратор вернёт 0!

int cmp(const void *a, const void *b) 
{
    const double *ad, *bd;
    
    ad = (const double*)a;
    bd = (const double*)b;
   
    if (*ad < *bd) 
    {   
        return -1;   
    }   
    else if (*ad > *bd)
    {   
        return 1;
    }   
    else
    {   
        return 0;
    }   
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы