qsort函数对二维数组的排序Cmp函数理解

news/2025/2/7 19:45:46/

在我们解题过程中,很多情况下,排序是必不可少的一环。

对于C语言来说,排序函数qsort就显得非常重要。

本文介绍一维数组、二维数组的qsort排序,其中二维数组的Cmp函数的写法做了详细注释。

qsort函数原型介绍:

/* arr:排序目标size: 排序个数sizeof(a[0]):排序元素大小cmp:排序规则函数
*/
qsort(arr, (size_t)size, sizeof(a[0]), Cmp)

一维数组排序:

注意:如果是字符串,则按照ASCII升序排序。

//从小到大排序
int Cmp(const void *a, const void *b) {int tempA = *(int *)a;int tempB = *(int *)b;return tempA - tempB;
}int main(){int arr[100] = {0};qsort(arr, 100, sizeof(arr[0]), Cmp);return 0;
}

二维数组排序:

下面主要写了对二维数组的第一维和第二维排序的方法

int Cmp(const void *a, const void *b) {// (1)对二维数组的第一维排序// 写法1:解引用一次变为一维指针,用数组的值相减return (*(int **)a)[0] - (*(int **)b)[0]; // 写法2: 对二级指针解引用两次得到第一列值//return *(*(int **)a) - *(*(int **)b);//(2) 对二维数组的第二维排序return (*(int **)a)[1] - (*(int **)b)[1];
}int main(){int arr[4][2] = {{5, 3}, {3, 1}, {1, 4}, {4, 2}};qsort(arr, 4, sizeof(arr[0]), Cmp);for(int i = 0; i < 4; i++) {printf("%d, %d\n", arr[i][0], arr[i][1]);}return 0;
}

 


http://www.ppmy.cn/news/1570137.html

相关文章

正则表达式详细介绍

目录 正则表达式详细介绍什么是正则表达式&#xff1f;元字符转义字符字符类限定字符字符分枝字符分组懒惰匹配和贪婪匹配零宽断言 正则表达式详细介绍 什么是正则表达式&#xff1f; 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想…

mysql-connector-java 和 mysql-connector-j的区别

引言 在 Java 项目中使用 MySQL 数据库时&#xff0c;常见的做法是通过 Maven 依赖管理工具引入 MySQL Connector/J 驱动程序。传统的配置方式如下&#xff1a; xml复制代码<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java&l…

扩展卡尔曼滤波算法解析及python实现

文章目录 扩展卡尔曼滤波的原理、公式推导及计算步骤一、原理二、公式推导(1) 状态预测方程(2) 协方差预测方程(3) 观测方程(4) 观测雅可比矩阵(5) 卡尔曼增益(6) 状态更新方程(7) 协方差更新方程 三、计算步骤四、例子(1) 系统模型(2)状态转移函数&#xff08;预测方程&#x…

http cookie的作用学习

1.介绍 HTTP Cookie 是 服务器发送给客户端&#xff08;浏览器&#xff09;的一小段数据&#xff0c;它会被客户端存储&#xff0c;并在后续请求时自动携带&#xff0c;以便服务器识别用户、保持会话状态或存储用户偏好等信息。 流程&#xff1a; 服务器发送 Cookie 服务器…

QT知识点复习

1.qt核心机制 对象树、信号和槽、事件机制 2.对象树的作用 优化了内存回收机制。子对象实例化的时候&#xff0c;被父对象放对象树上&#xff0c;父对象释放内存&#xff0c;子对象也释放内存 3.信号和槽的作用 实现多个组件之间的通讯 4.信号和槽的几种连接方式 1.UI界面提…

爱普生L3153打印机无线连接配置流程

家里使用的是移动宽带中兴路由器&#xff0c;有WPS功能&#xff0c;进入192.168.1.1管理员页面&#xff0c;用户名user&#xff0c;密码在路由器背面&#xff08;可以登录后修改密码&#xff09;。在网络-WLAN网络配置-WPS中&#xff0c;点击push button&#xff0c;激活路由器…

在Ubuntu子系统中基于Nginx部署Typecho

下载部署程序 typecho上传文件到子系统 创建文件夹typecho 在目录/var/www/html中创建一个目录typecho cd /var/www/html mkdir typecho将文件typecho.zip上传至新建的目录下&#xff0c;并解压文件 unzip typecho.zip授权文件夹 sudo chown -R www-data:www-data /var/www…

项目中常用中间件有哪些?分别起什么作用?

在项目开发中&#xff0c;常用的中间件包括消息中间件、缓存中间件、数据库中间件等&#xff0c;以下是一些常见的中间件及其作用&#xff1a; 消息中间件 Kafka&#xff1a;一般用于处理大规模的消息数据&#xff0c;具有高吞吐量、低延迟的特点&#xff0c;适用于日志收集、…