当前位置: 首页 > news >正文

(q)sort函数总结(基础篇)

1.sort函数

介绍:这是一个C++的函数,包含于algorithm头文件中。

基本格式:

sort(起始地址(常为变量名),排序终止的地址(变量名加上排序长度),自定义的比较函数)

重点:比较函数的编写:

以比大小为例,cmp函数编写格式应如下:

    bool cmp(_type x , _type y){return (排序条件) (<||>) (排序条件);}

实例化:1.一串数字按个位大小从小到大排序

    bool cmp(int x, int y) {return (x % 10) < (y % 10);}

2.按结构体中某一元素大小从小到大排序

    struct stu {int grades, num;};bool cmp(stu a, stu b) {return a.grades < b.grades;}

 3.再比如每一个学生有四科成绩,根据学生的四科成绩的平均分高低进行排名(@晴空๓)

    bool cmp_score(Student x,Student y){double average_x,average_y;average_x = (x.score[0]+x.score[1]+x.score[2]+x.score[3])/4;average_y = (y.score[0]+y.score[1]+y.score[2]+y.score[3])/4;return average_x > average_y;}

 此外,sort函数亦可对STL容器进行排序,详情请自行谷歌

2.qsort函数

 参考:1.(【C语言】快速排序函数qsort()

2. C语言快排函数 qsort()

简介:qosort函数是c语言中的一个快排函数,包含于头文件stdlib.h中

qsort函数包含四个参数,分别应如下填写:

第一个参数为欲排序的首地址

第二个参数应为欲排序的长度

第三个参数应为一个元素所占的字节

第四个参数为自定义的比较函数

实例化:

1.整型

int cmp (const void * a,const void *b)
{return * (int * )a-* (int *)b;
}

2.浮点型

int cmp (const void * a, const void * b)
{return *(double *)a > *(double *)b ? 1 : -1;
}

3.字符

int cmp (const void *a, const void *b)
{return *(char *)a - *(char *)b;
}

4.字符串

注意:

qsort(a, m, sizeof(char * )  * n, cmp);

 对字符串数组排序(char *s[]型)

char *s[100];
int cmp(const void *a, const void *b)
{return (strcmp(*(char**)a, *(char**)b));
}

对字符串数组的排序(char s[][]型)

char s[100][100];
int cmp(const void *a, const void *b)
{return (strcmp((char*)a, (char*)b));
}

 char s[ ]型:和char型的cmp函数编写的方法是一致的

int cmp (const void *a, const void *b)  
{  return * (char *)a - *(char * )b;  
}

注:以上全为按字典序排序

5.结构体:

结构体的二级排序:先根据double型的one的大小排序,若两值相等,在根据int型two的大小排序。

int cmp ( const void *a , const void *b )
{if((* (node * )a).one != ( * (node * )b).one)return ( * (node * )a).one > ( * (node * )b).one ? 1 : -1;else return (* (node * )a).two -( * (node * )b).two;
}

相关文章:

(q)sort函数总结(基础篇)

1.sort函数 介绍&#xff1a;这是一个C的函数&#xff0c;包含于algorithm头文件中。 基本格式&#xff1a; sort(起始地址&#xff08;常为变量名&#xff09;&#xff0c;排序终止的地址&#xff08;变量名加上排序长度&#xff09;&#xff0c;自定义的比较函数) 重点&a…...

【数据库】MongoDB数据库详解

目录 一&#xff0c;数据库管理系统 1&#xff0c; 什么是数据库 2&#xff0c;什么是数据库管理系统 二&#xff0c; NoSQL 是什么 1&#xff0c;NoSQL 简介 2&#xff0c;NoSQL数据库 3&#xff0c;NoSQL 与 RDBMS 对比 三&#xff0c;MongoDB简介 1&#xff0c; MongoDB 是什…...

【linux】进程间通信——system V

system V一、system V介绍二 、共享内存2.1 共享内存的原理2.2 共享内存接口2.2.1 创建共享内存shmget2.2.2 查看IPC资源2.2.3 共享内存的控制shmctl2.2.4 共享内存的关联shmat2.2.5 共享内存的去关联shmdt2.3 进程间通信2.4 共享内存的特性2.5 共享内存的大小三、消息队列3.1 …...

计算机网络的基本组成

计算机网络是由多个计算机、服务器、网络设备&#xff08;如路由器、交换机、集线器等&#xff09;通过各种通信线路&#xff08;如有线、无线、光纤等&#xff09;和协议&#xff08;如TCP/IP、HTTP、FTP等&#xff09;互相连接组成的复杂系统&#xff0c;它们能够在物理层、数…...

【数据结构趣味多】Map和Set

1.概念及场景 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 在此之前&#xff0c;我还接触过直接查询O(N)和二分查询O(logN)&#xff0c;这两个查询有很多不足之出&#xff0c;直接查询的速率太低&#xff0c;而二分查…...

Redis 之企业级解决方案

文章目录一、缓存预热二、缓存雪崩三、缓存击穿四、缓存穿透五、性能指标监控5.1 监控指标5.2 监控方式&#x1f34c;benchmark&#x1f34c;monitor&#x1f34c;slowlog提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 一、缓存预热 1.1 现象…...

雷达实战之射频前端配置说明

在无线通信领域&#xff0c;射频系统主要分为射频前端,以及基带。从发射通路来看&#xff0c;基带完成语音等原始信息通过AD转化等手段转化成基带信号&#xff0c;然后经过调制生成包含跟多有效信息&#xff0c;且适合信道传输的信号&#xff0c;最后通过射频前端将信号发射出去…...

Android SDK删除内置的触宝输入法

问题 Android 8.1.0&#xff0c; 展锐平台。 过CTA认证&#xff0c;内置的触宝输入法会连接网络&#xff0c;且默认就获取到访问网络的权限&#xff0c;没有弹请求窗口访问用户&#xff0c;会导致过不了认证。 预置应用触宝输入法Go版连网未明示&#xff08;开启后&#xff0…...

[202002][Spring 实战][第5版][张卫滨][译]

[202002][Spring 实战][第5版][张卫滨][译] habuma/spring-in-action-5-samples: Home for example code from Spring in Action 5. https://github.com/habuma/spring-in-action-5-samples 第 1 部分 Spring 基础 第 1 章 Spring 起步 1.1 什么是 Spring 1.2 初始化 Spr…...

H5视频上传与播放

背景 需求场景&#xff1a; 后台管理系统&#xff1a; &#xff08;1&#xff09;配置中支持上传视频、上传成功后封面缩略图展示&#xff0c;点击后自动播放视频&#xff1b; &#xff08;2&#xff09;配置中支持上传多个文件&#xff1b; 前台系统&#xff1a; &#…...

通过OpenAI来做机械智能故障诊断-测试(1)

通过OpenAI来做机械智能故障诊断 1. 注册使用2. 使用案例1-介绍故障诊断流程2.1 对话内容2.2 对话小结3. 使用案例2-写一段轴承故障诊断的代码3.1 对话内容3.2 对话小结4. 对话加载Paderborn轴承故障数据集并划分4.1 加载轴承故障数据集并划分第一次测试4.2 第二次加载数据集自…...

ASE40N50SH-ASEMI高压MOS管ASE40N50SH

编辑-Z ASE40N50SH在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为100mΩ&#xff0c;是一款N沟道高压MOS管。ASE40N50SH的最大脉冲正向电流ISM为160A&#xff0c;零栅极电压漏极电流(IDSS)为1uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE40N…...

MySQL基础命令大全——新手必看

Mysql 是一个流行的开源关系型数据库管理系统&#xff0c;广泛用于各种 Web 应用程序和服务器环境中。Mysql 有很多命令可以使用&#xff0c;以下是 Mysql 基础命令&#xff1a; 1、连接到Mysql服务器&#xff1a; mysql -h hostname -u username -p 其中&#xff0c;"ho…...

sklearn学习-朴素贝叶斯(二)

文章目录一、概率类模型的评估指标1、布里尔分数Brier Score对数似然函数Log Loss二、calibration_curve&#xff1a;校准可靠性曲线三、多项式朴素贝叶斯以及其变化四、伯努利朴素贝叶斯五、改进多项式朴素贝叶斯&#xff1a;补集朴素贝叶斯ComplementNB六、文本分类案例TF-ID…...

MySQL_主从复制读写分离

主从复制 概述 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制&#xff0c;从…...

shell基础学习

文章目录查看shell解释器写hello world多命令处理执行变量常用系统变量自定义变量撤销变量静态变量变量提升为全局环境变量特殊变量$n$#$* $$?运算符:条件判断比较流程控制语句ifcasefor 循环while 循环read读取控制台输入基本语法:函数系统函数basenamedirname自定义函数shel…...

考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略

考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略一级目录二级目录三级目录控制原理ELADRC信号提取龙格贝尔观测器方波注入simulink仿真给定转速&#xff1a;转速环&#xff1a;电流环&#xff1a;一级目录 二级目录 三级目录 首先声明一下&#xff0c;本篇博客是复现…...

2023年全国最新食品安全管理员精选真题及答案5

百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 41.《中华人民共和国食品安全法》第35条规定&#xff0c;以下&#xff0…...

git 笔记

简介 内容介绍 介绍git怎么管理和实现的 核心概念 文件名-hash-文件内容: 可以通过文件路径定位位置, 也可以通过hash定位位置;快照: 所谓一个快照其实就是一棵树, 叶子结点是一个hash,对应一个文件, 根节点对应文件夹; 一棵树就是一个快照;commit是tree, tree将文件串联, …...

ChatGPT 的盈利潜力:我使用语言模型赚取第一笔钱的个人旅程

使用 Fiverr、Python ChatGPT 和数据科学赚钱的指南。众所周知&#xff0c;ChatGPT 是 12 月发生的互联网突破性事件&#xff0c;几乎每个人都跳过了使用 AI 赚钱的潮流。在本文中&#xff0c;我将分享我是如何使用 ChatGPT 赚到第一笔钱的。本文包括以下主题&#xff1a;回到基…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...