C++排序函数sort()和qsort()的参数比较函数的统一记忆方法

前言:每次写排序函数sort或qsort都怕搞错参数的比较函数的规则,都需要来查一查确认下. 查得多了自然就总结到了个方法,下面,分享出来看能否有助于大家。

sort则需要<algorithm>

qsort需要引入头文件<stdlib.h>

sort(数组名,数组末地址,compare) //若不写compare则默认升序排列

sort(begin,end,compare)

关于参数compare,compare带两个同类型的参数,如果第一个参数排在第二个参数前面,返回true,否则返回false

qsort(数组名 ,元素个数,元素占用的空间(sizeof),比较函数)

void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));

qsort 函数的用法规定,"比较函数"的原型应是:int 函数名(const void * elem1, const void * elem2);

该函数的两个参数,elem1 和elem2,指向待比较的两个元素。也就是说, * elem1 和* elem2 就是待比较的两个元素。该函数必须具有以下行为:

  1) 如果 * elem1 应该排在 * elem2 前面,则函数返回值是负整数(任何负整数都行)。

  2) 如果 * elem1 和* elem2 哪个排在前面都行,那么函数返回0

(值为0时,qsort会让当前所比较的这两个元素暂时保持不动。)

  3) 如果 * elem1 应该排在 * elem2 后面,则函数返回值是正整数(任何正整数都行)。

一定注意qsort与sort函数中自定义的比较函数compare中哪个元素应该排在前面的要求是不同的。

sort和qsort的比较函数的统一记忆方法为: sort:a1<a2 ------ qsort:a1-a2<0 (或a1-a2=0) 等式成立为真(sort)或为负/零(qsort)时,不交换.其它交换.

个人感觉这样就统一好记多了,不用再查了,也不容易错了。

相关推荐
何中应1 分钟前
【Go-1】变量&常量定义
开发语言·后端·golang
CarIise13 分钟前
Spring 框架AOP与 XML 基础
java·开发语言
geovindu27 分钟前
rust:N-Barrier Pattern
开发语言·后端·设计模式·rust·屏障模式·并发型模式
AI宇宙狂想家32 分钟前
开源 AI 视频工具进化史:从难用到好用,OpenMontage 改了什么
开发语言·前端·人工智能·开源·ai创业·openmontage
大鹏说大话1 小时前
和小鹅通相近的知识付费小程序平台有哪些
开发语言
Dovis(誓平步青云)1 小时前
启元 T1 Pro 视觉伺服实践:基于 HSV 阈值与针孔测距的启元机器人寻物实现
开发语言·人工智能·机器学习·二次开发
weixin199701080161 小时前
官方授权通道和灰色爬虫,做数据服务该选哪条路(附 python 源码)
c++·爬虫·python
wuminyu1 小时前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
Ryan-Zhong1 小时前
数字人口播视频 API 实战:Python 跑通模板合成、异步轮询与批量出片
开发语言·python·音视频