sorting - 有没有一个好的库可以在 C 中对大量数字进行排序?

标签 sorting comparison quicksort radix-sort

如果我有一个很大的整数或 float 数组,什么是好的算法/ 排序的实现(用 C 语言)?

现在进行编辑有点晚了...但我正在寻找正确性和速度。

最佳答案

标准库中的 qsort() 是一个很好的工具。

对于这些情况,比较函数是微不足道的:

int cmp_int(const void *a, const void *b)
{
    const int *ia = a;
    const int *ib = b;

    if (*ia < *ib)
        return -1;

    if (*ia > *ib)
        return 1;

    return 0;
}

int cmp_float(const void *a, const void *b)
{
    const float *fa = a;
    const float *fb = b;

    if (*fa < *fb)
        return -1;

    if (*fa > *fb)
        return 1;

    return 0;
}

(编辑:基于从 a 中减去 b 的版本依赖于有符号溢出行为,因此这不是一个好主意。)

关于sorting - 有没有一个好的库可以在 C 中对大量数字进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169385/

相关文章:

c# - 按多列排序 List<string[]>

java - Java 中的 QuickSort 不提供排序结果

c - 为什么这种快速排序的实现比 qsort 慢?

c++ - 为什么我的数组没有被修改?

java - 在线性时间和常数空间的交替位置对具有两个排序序列的数组进行排序

c++ - 在没有附加库的情况下按字母顺序对给定文本进行排序

c# - LINQ(或其他东西)比较两个列表中的一对值(以任何顺序)?

java - 将多个数字与用户输入进行比较,以找到最接近的答案。

java - 如何比较Java中的日期?

java - 使用集合对值进行排序