如何为整数编写qsort比较函数?

时间:2018-04-14 18:23:12

标签: c sorting qsort

class MyClass { }; function doSomethingWithClass(klass: Class<MyClass>): void { } doSomethingWithClass(MyClass) 库函数qsort采用比较函数来比较整数。谷歌搜索建议如下

c

这存在有符号整数溢出(或下溢)的问题,在int compare (const void *a, const void *b) { const int *ia = (const int *)a; // casting pointer types const int *ib = (const int *)b; return *ia - *ib; } 中未定义。直截了当的解决方案非常冗长,可能不是最好的。

c

其他选项是使用更长的有符号整数,如int compare (const void *a, const void *b) { const int *ia = (const int *)a; // casting pointer types const int *ib = (const int *)b; if(*ia > *ib) { return 1; } else if (*ia == *ib) { return 0; } return -1; } ,但问题仍然存在,我们必须对long long int进行排序。

什么是最佳选择,因为排序整数是一件非常常见的事情?

0 个答案:

没有答案