pol*_*llo 1 c++ algorithm nan quicksort
以下是我的代码:
#include <stdlib.h>
#include <stdio.h>
#include <limits>
#define INFINITY std::numeric_limits<float>::infinity()
#define NEGINFINITY -std::numeric_limits<float>::infinity()
int floatcomp(const void* elem1, const void* elem2)
{
    if (*(const float*)elem1 < *(const float*)elem2)
        return -1;
    return *(const float*)elem1 > *(const float*)elem2;
}
int main()
{
    float array[10] = {INFINITY, 3.5f, 144.4f, NAN, 12.4f, NEGINFINITY, 1.4f, -0.0f, 5.9f};
    int i;
    for (i = 0; i < 10; i++)
        printf("%f\n", array[i]);
    printf("\n");
    qsort(array, 10, sizeof(float), floatcomp);
    for (i = 0; i < 10; i++)
        printf("%f\n", array[i]);
    return 0;
}       
快速排序算法按正确的顺序对输入的数字进行排序,但是列表中始终存在0.00000.
同时在向阵列添加NaN时,NaN没有正确排序,我无法正确地将NaN的两个不同的尾数添加到我的代码中作为顶部的字符串.
要回答为什么总是包含零,那是因为你声明了一个包含10个元素的数组,但是只用9初始化它,所以第10个为零.
至于NaN,你应该准确地解释你对NaN"正确"排序的定义是什么,以及结果与你的预期有何不同.