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)时,不交换.其它交换.

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

相关推荐
крон30 分钟前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
zh_xuan1 小时前
c++ 单例模式
开发语言·c++·单例模式
老胖闲聊1 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1182 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之2 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?2 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头3 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
liuyang-neu3 小时前
java内存模型JMM
java·开发语言
int型码农3 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
利刃大大3 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目