关于cmp函数,我今天一直测试了很久不知道什么情况,本来自己写cmp函数应该是这样
bool cmp(int a, int b) {
return a > b;
}
给sort用来排序,按照我一直的理解这样就是从大到小排列,所以就该是:
如果a>b return 1,符合条件的话,序列不用动;如果不符合就交换;
然后我又尝试了第二种写法:
bool cmp(int a, int b) {
//*1
//return a > b;
//*2
if (a > b) return true;
}
再次验证了一次,果然,是符合cmp中的判断条件时不做交换。
为什么我会产生疑问呢?
我有一次在网上搜索cmp函数的时候,看到了qsort的cmp函数,规则是:
compare( (void *) & elem1, (void *) & elem2 );
Compare 函数的返回值
|
描述
|
---|---|
< 0
|
elem1将被排在elem2前面
|
0
|
elem1 等于 elem2
|
> 0
|
elem1 将被排在elem2后面
|