sort函数中的cmp函数使用

2023-05-16

sort函数中的cmp函数使用

在leetcode上面刷题的时候发现大家使用sort函数的时候总能用出一些与众不同的比较方式,其中使用cmp自己定义排序放的非常的方便,因此我们这里记录一下cmp的使用。

首先我们先来看一下最基础的排序方式:

在这里插入图片描述

这样我们得到的结果就是一个非常简单的非递减排序

在这里插入图片描述

那么cmp函数的使用是怎么样的呢,cmp函数的定义其实很奇特,他是一个返回值为bool类型的函数,它定义的内容其实是“小于”,可能这么讲不太清楚,所以我们先看个例子:
在这里插入图片描述

在主函数前我们新定义了一个cmp(什么名字都行),然后主要看里面的判断,其中返回值是a>b的真假。如果a>b,那么返回值为真,也就是说在这里,a>b的情况才是“小于”,所以比较大的值a其实这时候是“小于”b的,所以sort就通过我们定义的“小于”去重新排列,排列出的顺序应该是和上面的例子相反的结果,运行得到下面结果:

在这里插入图片描述

这里讲解的是比较基础的定义cmp,下面介绍更高阶的定义模式,我们这个例子还是使用大家非常熟悉结构,学生姓名以及学生成绩,我们可以看到每个学生都会有一个姓名和一个成绩,我们想要对学生按成绩进行排名,那么方式就如下所示:

#include<iostream>
#include<algorithm>
using namespace std;
struct student
{
    string name;
    int grade;
}; 
bool cmp(student a, student b) {
    return a.grade < b.grade;
}
int main()
{
    student students[8];
    students[0].name = "wang_jie";
    students[1].name = "wu_jie";
    students[2].name = "zhao_jie";
    students[3].name = "sun_jie";
    students[4].name = "li_jie";
    students[5].name = "zheng_jie";
    students[6].name = "qian_jie";
    students[7].name = "feng_jie";
    for (int i = 0; i < 8; ++i) {
        students[i].grade = 100 - rand()%20;//其实就是随机给人员打成绩
    }                                       //我怀疑有的老师就是这么打成绩的

    //sort(students, students + 8);
    sort(students, students + 8, cmp);
    for (int i = 0; i < 8; ++i) {
        cout << students[i].name <<"           "<< students[i].grade<<endl;
    }

}

这样输出的结果我们看一下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bHfGXIWL-1605355077107)(C:\Users\gsz\Desktop\博客草稿\sort函数中的cmp函数使用.assets\image-20201114193155304.png)]

我们可以看到学生已经按照成绩的高低排列好,所以根据这种方式我们可以使很多困难的排序题变得简单起来。感觉学废了的同学可以去leetcode上面做一下973. 最接近原点的 K 个点这道题练练手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sort函数中的cmp函数使用 的相关文章

  • 附加!-关于安装R4.0.0-详细步骤

    附加博客 关于安装R 详细步骤 在我下载完毕之后 xff0c 发现对于第一次安装的 小白 来说可能还是有一点儿彷徨 xff0c 所以下面的步骤就以图的形式来走一遍 xff1a 第一步 xff1a 下载得到下图 xff1a xff08 R 4
  • 【牛客网 - 华为机试 - HJ5 进制转换】

    描述 写出一个程序 xff0c 接受一个十六进制的数 xff0c 输出该数值的十进制表示 数据范围 xff1a 保证结果在 输入描述 xff1a 输入一个十六进制的数值字符串 输出描述 xff1a 输出该数值的十进制字符串 不同组的测试用例
  • Java JDK11的下载与安装

    前言 本篇文章是基于win10系统下载安装JDK11的教程 1 下载Oracle JDK 进入Oracle 官网 xff1a https www oracle com java technologies downloads java11 选
  • 电脑怎样删除警告“操作无法完成“的文件夹

    问题概述 虽然系统这样的提示了 xff0c 但是我们查看一下桌面没有看到任何正在运行的程序啊 xff0c 这是怎么了 xff0c 是不是系统出错了 其实不是系统出错了 xff0c 只是有的应用程序在后台运行 xff0c 我们根本看不到 xf
  • 使用python解决三门问题(Monty Hall Problem)实验

    问题描述 奖品随机分布在3扇门后 xff0c 客户随机选择其中一扇 xff0c 主持人打开另外两扇中任意没有奖品的一扇 xff0c 问客户选择以下哪种策略赢面更大 xff1a 1 坚持原来的选择 2 改选剩下的那扇未打开的门 问题分析 1
  • 75个顶级开源安全应用

    本文转载自 xff1a http www iii soft com forum php mod 61 viewthread amp tid 61 1513 随着网络犯罪的日益增多 xff0c 或许我们需要更多资金投入到安全方面 不过 xff
  • IntelliJ IDEA 常用设置大全

    对IDEA的配置进行优化 xff0c 目的是为了个性化定制提高编码效率 以下为个人通过自己平时积累及网络上分享技巧进行总结 文章标题有点多 xff0c 可通过目录进行快速跳转 基本以下的配置就足以在工作中提高效率 xff0c 按步配置完成后
  • Windows 安装并配置 MySQL 5.6

    1 xff0c 下载 MySQL 压缩包 1 1 xff0c 打开 https www mysql com xff0c 进入 MySQL 的官方网站 xff0c 点击 Downloads xff0c 进入 下载中心 1 2 xff0c 在
  • Git 常用命令记录

    文章目录 安装卸载配置管理不常见的使用场景Idea更新项目失败忽略文件的权限变化配置自动换行创建SSH密钥多账号ssh配置免密码登录远程服务器https协议下提交代码免密码文件推向3个git库修改远程仓库地址撤销远程记录放弃本地的文件修改最
  • Docker 学习笔记 | 常用命令

    文章目录 什么是 DockerDocker 理念能做什么Docker 基本组成 Linux 中安装CentOS 6 8 安装 DockerCentOS 7 安装 DockerDocker 中国官方镜像加速使用 registry mirror
  • Debain查看端口占用开放端口

    查看指定端口服务 查看3002被哪些服务占用 xff1a sudo lsof i 3002 关闭指定服务 xff1a kill PID 端口开放 编辑文件 xff1a vi etc nftables conf 修改内容如下 usr sbin
  • pm2命令使用

    文章目录 常用命令示例 常用命令 启动应用程序 pm2 start lt app name gt 停止应用程序 pm2 stop lt app name gt 重启应用程序 pm2 restart lt app name gt 删除应用程序
  • Markdown入门指南

    导语 一 认识Markdown 使用Markdown的优点 二 Markdown 语法 标题列表 嵌套列表 引用图片与链接 自动链接 粗体与斜体表格代码框 其它 分割线索引超链注释 转义字符段落缩进 空格 字体 字号 颜色 导语 Markd
  • Markdown进阶语法

    文章目录 markdown进阶语法内容目录加强代码块脚注流程图时序图LaTeX公式 markdown进阶语法 内容目录 使用 TOC 引用目录 xff0c 将 TOC 放至文本的首行 xff0c 编辑器将自动生成目录 有一些编辑器不支持 T
  • Maven 变量及常见插件配置详解

    一 变量 自定义变量及内置变量 1 自定义变量2 内置变量 二 常见插件配置 1 编译插件2 设置资源文件的编码方式3 自动拷贝 jar 包到 target 目录4 生成源代码 jar 包5 将项目打成 jar 包 assembly xml
  • Dos命令讲解

    一 什么是DOS二 启动DOS的多种方法 三 DOS的内部命令与外部命令四 系统环境变量讲解 增加Path环境变量路径常见的系统环境变量 五 常用的运行命令六 DOS使用技巧 设置CMD的默认路径设置CMD的字体 背景颜色设置快捷键启动CM
  • 题解:luogu P5568 [SDOI2008]校门外的区间

    题解 xff1a luogu P5568 SDOI2008 校门外的区间 luogu P5568 SDOI2008 校门外的区间 前置知识 xff1a 珂朵莉树 问题一 xff1a 开闭区间 区间端点均为整数 xff0c 不妨认为 xff0
  • 常用DOS命令之通俗易懂篇

    摘要 xff1a 讲解常用的Dos命令 xff0c 如果需要学习更多的命令可以使用cmd的help工具 文章内容较长 xff0c 可以通过搜索来查找对应的命令 常用DOS命令之通俗易懂篇 Arp 命令Assoc 关联At 计划服务Attri
  • 修改/忘记数据库密码

    文章目录 如何修改数据库密码一 用 SET PASSWORD 命令二 用 mysqladmin三 用 UPDATE 直接编辑 user 表四 在忘记 root 密码的时候 xff0c 可以这样windows下修改linux下修改 五 解决5
  • 远程桌面,身份验证错误:要求的函数不正确等解决办法

    问题解决方法具体解决办法windows 家庭版家庭版最终解决方案 问题 windows 版本 10 0 17134 xff0c 安装最新补丁后无法远程 windows server 2008 2013 2016 服务器 报错信息如下 xff

随机推荐

  • Apache的配置详解 带图

    Apache 的配置详解 带图 1 01 ServerRoot 配置1 02 Mutex default logs1 03 Listen 配置1 04 Dynamic Shared Object DSO Support 动态共享对象支持 1
  • IIS 反向代理到 Apache、Tomcat

    环境工具需求教程 反向代理 IIS 反向代理可以将请求的网址重写到其它网址 xff0c 达到转发的目的 一般用于一台服务器只允许开启80端口 xff0c 而80端口又被IIS使用 xff0c 此时需要在IIS中设置URL重写 xff0c 将
  • 使用hexo+github搭建免费个人博客详细教程

    Windows环境下Git安装 配置SSH key 安装node js npm 安装Hexo及配置 发布博客 前言 使用github pages服务搭建博客的好处有 xff1a 全是静态文件 xff0c 访问速度快 xff1b 免费方便 x
  • Hexo使用细节及各种问题

    解决markdown图片不显示 返回403 forbidden 添加本地图片无法显示 修改文章page模板 同时发布同步到多个仓库站点 Github coding 图片不显示 在使用过程中 xff0c 会发现有的引用图片无法显示的问题 但是
  • 实现Github和Coding仓库等Git服务托管更新

    如何使Github Coding Gitee 码云 同时发布更新 xff0c 多个不同Git服务器之间同时管理部署发布提交 缘由 因为在Github上托管的静态页面访问加载速度较为缓慢 xff0c 故想在Coding上再建一个静态页面的项目
  • 渗透测试常用工具

    包括 Burp Suite Acunetix Web Security with Acunetix Vulnerability Scanner Sqlmap Layer PentestBox Struts 2漏洞检测 御剑工具集锦 Kali
  • Jetbrains IntelliJ IDEA PyCharm 注册激活(2018最新)

    AppCode CLion DataGrip GoLand IntelliJ IDEA PhpStorm PyCharm Rider RubyMine WebStorm下载注册激活 官方下载地址 AppCode CLion DataGrip
  • 有道翻译反反爬虫(python)

    有道翻译反反爬虫 xff08 python xff09 该博客创作于2021 6 30 xff0c 之后有失效可能 作为一个初学者 xff0c 花两天时间破解了有道翻译的反爬虫系统 xff0c 故为之文以记之 参考文章 xff1a 博客1博
  • 建一个别人打不开的文件夹

    怎么创建一个打不开的文件夹 xff0c 文件夹打不开 相信大家都遇到过自己的一些隐私文件不愿意让别人看到的情况吧 xff0c 怎么解决呢 xff1f 隐藏起来 xff1f 换个名字 xff1f 或者加密 xff1f 这些办法都可以办到 xf
  • Sublime入门

    文章目录 Sublime入门介绍下载安装安装Sublime Text3 安装插件插件安装器用Package control安装插件用Package control卸载插件用Package control更新插件 Sublime入门 介绍 S
  • 正则表达式入门教程

    文章目录 什么是正则表达式 1 基本匹配2 元字符2 1 点运算符 96 96 2 2 字符集2 2 1 否定字符集 2 3 重复次数2 3 1 96 96 号2 3 2 96 43 96 号2 3 3 96 96 号 2 4 96 96
  • Centos7上卸载重装MariaDB数据库

    查询所安装的MariaDB组件 xff1a span class token punctuation span root 64 localhost logs span class token punctuation span span cl
  • 【数字图像处理】四种常用的滤波器

    数字图像处理 四种常用滤波器 数字图像处理一 平滑滤波器1 1 基本原理1 2 作用1 3 邻域加权平均实现方式 二 高斯滤波器2 1 基本原理2 2 特点 三 中值滤波器3 1 基本原理3 2 适用场合3 3 实现方式3 4 特点 四 拉
  • 远程X技术初探

    前几天和朋友看到一篇实现远程X的文章 xff0c 就一起尝试了一下 xff0c 基本上成功了 xff0c 具体的过程就写在这篇博客中了 我的机器是64位的Debian Wheezy xff0c 朋友的机器上装的是Arch 实现的思路是先在自
  • Linux安装confluence

    借鉴网址 xff1a Confluence 6 9 0 安装 走看看 一 版本说明 xff1a 1 CentOS 7 0 2 Confluence6 9 xff1a atlassian confluence 6 9 0 x64 bin 链接
  • 面向对象——类和对象

    一 面向对象的概念 面向对象是一种符合人类思维习惯的编程思想 现实生活中存在各种形态不同的事物 xff0c 这些事物之间存在着各种各样的联系 在程序中使用对象来映射现实中的事物 xff0c 使用对象的关系来描述事物之间的联系 xff0c 这
  • 洛谷 P1593 因子和 (升级版!)

    题目描述 已知一个等差数列 an 的首项为 且对于任意两个正整数 i xff0c j 都存在ai 43 aj 也在该数列中 求所有可能的公差 d 的和 答案对 99824353 取模 输入输出格式 输入格式 xff1a 输入的第一行为两个正
  • ubuntu断网、网络设置消失的解决办法

    不知道为啥 xff0c Ubuntu20 04搭配VM16Pro时有很大概率的出现这Bug xff0c 虽然网络上有了很多的帖子记录了解决办法 xff0c 但遇到了还是要记录一下的 环境 1 span class token punctua
  • 特殊三分图匹配

    特殊三分图匹配 64 LOJ 一般三分图的匹配需要运用基于拉格朗日松弛的分支定界法 xff0c 并运用启发式算法得到较优的初始下界 已被证明是NPC问题 出题者在此说明一般三分图的匹配可以解决本题 题目描述 三个点集X xff0c Y xf
  • sort函数中的cmp函数使用

    sort函数中的cmp函数使用 在leetcode上面刷题的时候发现大家使用sort函数的时候总能用出一些与众不同的比较方式 xff0c 其中使用cmp自己定义排序放的非常的方便 xff0c 因此我们这里记录一下cmp的使用 首先我们先来看