小编Mpr*_*Moe的帖子

Qsort和Comparators奇怪的行为.C

所以,我在C库的C程序中使用qsort.它按预期工作,所以我决定玩比较器.

比较器1(我用它):

 int compare (const void * a, const void * b)
{
  if (*(double*)a > *(double*)b) return 1;
  else if (*(double*)a < *(double*)b) return -1;
  else return 0;  
}
Run Code Online (Sandbox Code Playgroud)

比较器2:

int comp (const void *a, const void *b)
{
    const double *ia = (const double *)a; // casting pointer types 
    const double *ib = (const double *)b;
    return *ia  - *ib; 
}
Run Code Online (Sandbox Code Playgroud)

第一个按我想要的方式工作.第二个应该是第一个做同样的事情.我想使用第二个,因为程序运行得快一点,但事实上它并没有真正排序任何东西!

我很确定我在较小的阵列上使用了比较器#2并且它有效.除非我在那里遗漏了什么.

c sorting algorithm pointers

4
推荐指数
1
解决办法
81
查看次数

标签 统计

algorithm ×1

c ×1

pointers ×1

sorting ×1