我是使用 qsort 的新手,我正在尝试对预定义的 double 组进行 qsort,不幸的是,在使用 qsort 对数组进行排序后,我收到的结果全是 0。我完全迷失了,任何建议将不胜感激。这是我用来对这个 double 组进行排序的代码。
static int compare (const void * a, const void * b){
if (*(const double*)a > *(const double*)b) return 1;
else if (*(const double*)a < *(const double*)b) return -1;
else return 0;
}
double stuff[] = {255, 1, 5, 39.0};
qsort(stuff, 4, sizeof(double), compare);
int i;
for(i = 0; i < 4; i++){
printf("%d %s", stuff[i], " ");
}
最佳答案
您的问题是您使用 printf()
函数打印结果的方式。要打印 double
值,您需要使用 %f
,如下所示:
printf("%f ", stuff[i]);
此外,旁注:您的比较函数中不需要这些 else
语句,因为一旦条件评估为 true,它将返回该函数。
关于c - Q对 double 组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18907621/