qsort和sort函数中的 cmp函数

qsort:

前几天刷题的时候有一题因为这个函数的原因,WA了无数次

我现在对这个函数的理解是:

对于要排序的一个数组中的两个元素 a,b, 

1、 当cmp返回1的时候,sort的操作就把a放在后面;

2、当cmp返回-1的时候,sort的操作就把a放在前面;

3、当cmp返回0的时候,sort的操作不做任何改变。

比方说 要按升序排列的话  当a〉b的时候返回1 当 a 〈b的时候返回-1

手册上的解释:

Pointer to a function that compares two elements.
This function is called repeatedly by qsort to compare two elements. It shall follow the following prototype:

 
int compar (const void* p1, const void* p2);
 

Taking two pointers as arguments (both converted to  const void*). The function defines the order of the elements by returning (in a stable and transitive manner):
return valuemeaning
<0The element pointed by p1 goes before the element pointed by p2
0The element pointed by p1 is equivalent to the element pointed by p2
>0The element pointed by p1 goes after the element pointed by p2

For types that can be compared using regular relational operators, a general  compar function may look like:

1
2
3
4
5
6
int compareMyType (const void * a, const void * b)
{
  if ( *(MyType*)a <  *(MyType*)b ) return -1;
  if ( *(MyType*)a == *(MyType*)b ) return 0;
  if ( *(MyType*)a >  *(MyType*)b ) return 1;
}

sort:
cmp函数:
Binary function that accepts two elements in the range as arguments, and returns a value convertible to  bool. The value returned indicates whether the element passed as first argument is considered to go before the second in the specific  strict weak ordering it defines.
The function shall not modify any of its arguments.
This can either be a function pointer or a function object.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值