|
这个cmp写得不是很好
首先是违背了惯例,在标准库中的strcmp memcmp这些函数,都是a < b的时候返回-1 ,a==b的时候返回0,a > b的时候返回1。这个习惯被后来大多数语言继承了
然后在a == b的时候返回-1,那么a==b的时候依然会发生交换,影响程序的效率
建议写成
- int cmp(const void* a, const void* b)
- {
- int x = *a, y = *b;
- if(x < y)
- return -1;
- else if(x == y)
- return 0;
- return 1;
- }
复制代码 |
|