c - 如何正确排序数组?

标签 c sorting qsort

我有用于排序数组 polsum 的代码:

int comp (const void * a, const void * b){   
   double aa = *(double*)a, bb = *(double*)b;

   if (aa < bb) return -1;
   if (aa > bb) return  1;
   return 0;
}

double sort(double *polsum){                              
    int p;
    qsort(polsum, sizeof(double),sizeof(double), comp);
    return 0;
}

但是输出是:

5,01/
80,86/
85,01/
85,01/
300,88/
600,88/
77888,88/
100400,00/
670,88/
80,86/
80,86/

我哪里做错了?

最佳答案

您传入 sizeof(double) 作为要排序的元素的数量。 sizeof(双) == 8

考虑将以下内容添加到您的排序函数中:

double sort(double *polsum, int count) {
    int p;
    qsort(polsum, count, sizeof(double), comp);
    return 0;
}

关于c - 如何正确排序数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886286/

相关文章:

c++ - qsort线程安全吗?

在真实函数的副本中调用 C 函数

c# - TCP C 套接字服务器到 C# 客户端,数据包一起使用发送

sorting - 如何在 ColdFusion 7 中对查询对象进行排序?

java - 如果您有一个字符串数组,按升序对该数组进行排序的最快方法是什么?

r - 如何在 R 中对 SessionInfo() 的输出进行排序?

c++ - 如何按特定单元格对二维数组进行快速排序?

c++ - 用子类定义类数组

c - 使用 Stat 和 OpenDir()/ReadDir() 在 C 语言中列出当前目录和文件类型(Dir、Reg、Lnk)

c++ - 使用 qsort 对每个字符串进行排序,然后对字符串集进行排序