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

embedded/2025/2/8 4:25:33/

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

对于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/embedded/160461.html

相关文章

rabbitMQ消息转换器

消息转换器 Spring的消息发送代码接收的消息体是一个Object&#xff1a; 而在数据传输时&#xff0c;它会把你发送的消息序列化为字节发送给MQ&#xff0c;接收消息的时候&#xff0c;还会把字节反序列化为Java对象。 只不过&#xff0c;默认情况下Spring采用的序列化方式是J…

配置@别名路径,把@/ 解析为 src/

路径解析配置 webpack 安装 craco npm i -D craco/craco 项目根目录下创建文件 craco.config.js &#xff0c;内容如下 const path require(path) module.exports {webpack: {// 配置别名alias: {// 约定&#xff1a; 使用 表示src文件所在路径: path.resolve(__dirname,src)…

【漫画机器学习】083.安斯库姆四重奏(Anscombe‘s Quartet)

安斯库姆四重奏&#xff08;Anscombes Quartet&#xff09; 1. 什么是安斯库姆四重奏&#xff1f; 安斯库姆四重奏&#xff08;Anscombes Quartet&#xff09;是一组由统计学家弗朗西斯安斯库姆&#xff08;Francis Anscombe&#xff09; 在 1973 年 提出的 四组数据集。它们…

了解 ALV 中的 field catalog (ABAP List Viewer)

在 ABAP 中&#xff0c;字段目录是使用 ALV &#xff08;ABAP List Viewer&#xff09; 定义内部表中的数据显示方式的关键元素。它提供对 ALV 中显示的字段的各种属性的控制&#xff0c;例如列标题、对齐方式、可见性、可编辑性等。关键概念&#xff1a; Field Catelog 字段目…

Sumatra PDF:小巧免费,满足多样阅读需求

Sumatra PDF是一款完全免费的本地阅读器软件&#xff0c;以小巧的体积和全面的功能受到用户青睐。如今&#xff0c;它已经更新到3.3版本&#xff0c;带来了更多实用功能&#xff0c;尤其是新增的注释功能&#xff0c;值得我们再次关注。 软件特色 轻量级体积&#xff1a;压缩…

linux环境自动化golang项目启动脚本解析

一.场景介绍 当在本地创建了golang项目,修改了代码功能,怎么在远程测试服务器上更新该功能呢,可以使用下面的步骤来解决该问题(这只是其中一种方法): (1).推送最新代码到远程仓库 (2).在测试服务器上创建该项目并拉取最新代码 (3).创建deploy.sh脚本 (4).运行deploy.sh脚本 二.…

离线安装Appium Server

1、问题概述? 安装Appium通常有两种方式: 第一种:下载exe安装包,这种是Appium Server GUI安装方式,缺点是通过命令启动不方便。 第二种:通过cmd安装appium server,可以通过命令方式启动,比较方便。 问题:在没有外网的情况下,无法通过命令在cmd中安装appium server…

操作系统和中间件的信息收集

在浏览器中收集操作系统与中间件信息时&#xff0c;主要通过客户端JavaScript&#xff08;用于操作系统/浏览器信息&#xff09;和服务器端脚本&#xff08;用于中间件信息&#xff09;实现。以下是分步指南&#xff1a; 一、客户端操作系统信息收集&#xff08;JavaScript&am…