当前位置: 首页 > 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;回到基…...

一个真实网工的一天

很多人对网络工程师的印象,还停留在“敲命令、配交换机、修Wi-Fi”。 但真正干过这行的人都知道,网络工程师这个职业,有时候像消防员,有时候像急诊医生。平时看起来风平浪静,一旦出问题,电话、消息、会议能在5分钟内同时炸开。 有人天天996,也有人慢慢开始“只做分内事…...

JS 异步 从零讲(大白话 + 真实场景 + 可运行案例)

按顺序&#xff1a;回调函数 → Promise → async/await&#xff0c;工作最常用&#xff0c;直接上手。1. 回调函数&#xff08;最原始&#xff0c;缺点&#xff1a;回调地狱&#xff09;2. Promise&#xff08;解决回调地狱&#xff0c;链式调用&#xff09;new Promise((reso…...

游戏开发团队必须立即升级的语音合成栈:Llama-3-TTS开源模型实测对比(RTX 4090 vs. Snapdragon 8 Gen3)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI语音合成在游戏开发中的应用 AI语音合成&#xff08;Text-to-Speech, TTS&#xff09;正深刻重塑游戏叙事、角色交互与本地化工作流。相比传统预录语音&#xff0c;实时TTS可动态生成符合上下文语境、情绪状…...

告别BMC踩坑:手把手教你用U盘给IBM/Lenovo x3650 M5装系统(含JRE报错解决方案)

企业级服务器系统部署实战&#xff1a;IBM/Lenovo x3650 M5的U盘安装全指南 当面对一台崭新的IBM/Lenovo x3650 M5服务器时&#xff0c;许多IT运维人员都会遇到系统部署的挑战。虽然官方文档通常推荐通过BMC/IMM远程管理接口进行安装&#xff0c;但现实操作中&#xff0c;Java…...

别再乱调了!YOLOv8实战中NMS和IoU参数到底怎么设?附真实场景对比图

YOLOv8实战&#xff1a;NMS与IoU参数调优的黄金法则 在目标检测领域&#xff0c;YOLOv8凭借其卓越的性能和易用性已成为众多开发者的首选。然而&#xff0c;许多人在模型推理阶段常常陷入参数调整的困境——尤其是非极大值抑制(NMS)和交并比(IoU)这两个关键参数。不当的设置可…...

Spring Security权限进阶:用@PostAuthorize和@PostFilter保护你的API返回数据(Spring Boot 3.x实战)

Spring Security权限进阶&#xff1a;用PostAuthorize和PostFilter保护你的API返回数据&#xff08;Spring Boot 3.x实战&#xff09; 在构建现代Web应用时&#xff0c;数据安全始终是开发者面临的核心挑战之一。传统权限控制往往聚焦于"入口检查"——确保只有合法用…...

通过Taotoken用量看板清晰掌握各模型调用成本与消耗趋势

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken用量看板清晰掌握各模型调用成本与消耗趋势 在将大模型能力集成到实际项目时&#xff0c;除了关注功能实现&#xff0…...

【Perplexity语言学习资源黄金组合】:搭配Anki+TTS+语法解析器的「零依赖」自主学习系统(仅需1台设备)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity语言学习资源黄金组合的系统定位与核心价值 Perplexity 作为一款以实时检索增强生成&#xff08;RAG&#xff09;为核心架构的AI问答引擎&#xff0c;其在语言学习领域的独特价值并非源于通用对话能…...

构建智能交易系统:高效掌握缠论量化实战技巧

构建智能交易系统&#xff1a;高效掌握缠论量化实战技巧 【免费下载链接】chan.py 开放式的缠论python实现框架&#xff0c;支持形态学/动力学买卖点分析计算&#xff0c;多级别K线联立&#xff0c;区间套策略&#xff0c;可视化绘图&#xff0c;多种数据接入&#xff0c;策略开…...

LVGL按钮(lv_btn)与开关(lv_switch)事件处理全解析:从点击检测到实现‘智能家居面板’

LVGL按钮与开关事件处理实战&#xff1a;构建智能家居控制面板 在嵌入式设备的人机交互界面开发中&#xff0c;LVGL作为轻量级图形库已经成为许多开发者的首选。特别是当我们需要为智能家居系统设计控制面板时&#xff0c;如何高效地处理按钮(lv_btn)和开关(lv_switch)的交互事…...