如果我有一个很大的整数或 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/