iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解C++ sort函数的cmp参数
  • 948
分享到

详解C++ sort函数的cmp参数

2024-04-02 19:04:59 948人浏览 独家记忆
摘要

目录1、升序排序2、降序排序3、结构体的排序实例前言: 学算法的第一天你在学冒泡、桶排 在你还没搞明白快排和归并的时候 你已经学到了数据结构最后的堆排序和希尔排序 可以说排序是很多竞

前言:

算法的第一天你在学冒泡、桶排

在你还没搞明白快排和归并的时候

你已经学到了数据结构最后的堆排序和希尔排序

可以说排序是很多竞赛生的噩梦……

于是它诞生了


void std::sort()

Sort the elements of a sequence using a predicate for comparison.

参数:
__first – An iterator.
__last – Another iterator.
__comp – A comparison functor.

针对一个地址区间完成排序,算法每次自动选择,以快排为主

c++需要头文件#include <alGorithm> (当然万能头我也没意见)

1、升序排序

最简单的就是用它完成int类型升序排序


Copy Line-numbers language-cpp
#include <iOStream>
#include <algorithm>
using namespace std;
int main() {
    int a[5] = {2, 1, 3, 5, 4};
    sort(a, a + 5);
    for (int i = 0; i < 5; i++) cout << a[i] << " ";
}


输出如下,很简单

1 2 3 4 5

这里传入给sort的参数 a a + 5 都是地址,和大多数编程语言一样,这里遵循左闭右开原则,即函数实际会读取和操作的五个地址如下:


a + 0
a + 1
a + 2
a + 3
a + 4

2、降序排序

如果需要降序排序,程序如下


#include <iostream>
#include <algorithm>
using namespace std;

bool cmp(int x, int y){
    return x > y;
}

int main() {
    int a[5] = {2, 1, 3, 5, 4};
    sort(a, a + 5, cmp);
    for (int i = 0; i < 5; i++) cout << a[i] << " ";
}

输出:

5 4 3 2 1

我们多写了一个bool类型的cmp函数,并将其地址作为第3个参数传给了sort

cmp可以替换其内置的函数来判断究竟该让哪些元素在前哪些元素在后

很多小伙伴可能有个疑惑:如何从实质上理解cmp函数,或者说我究竟该怎么记住cmp怎么写呢?

我们来看这三个点:

  • 毋庸置疑,cmp函数返回bool类型,表示当前排序是否正确(具体见3)
  • cmp函数应接受两个参数,类型与要排序的数组相同(可以是int、short和long long这些常见类型,当然也可以是结构体)
  • cmp返回值的实际意义是传入a、b两个参数,a在前b在后的排序是否是正确的,若是正确的返回1(true),否则返回0(false)

那么我们再看一个结构体的排序实例

3、结构体的排序实例

结构体的排序实例:输入10个学生的名字和成绩,按照成绩从高到低排序后输出

输入数据:


Yixiangzhilv 90
Mydr 60
Xiaoming 10
Mr.Glass 60
GZN 80
Wangzi 85
Hyx 100
Wyx 99
Xth 0
Zz 75

程序实现如下:


#include <algorithm>
#include <iostream>
using namespace std;

struct node {
    string name;
    int score;
};

bool cmp(struct node x, struct node y) {
    return x.score > y.score;
}

int main() {
    struct node a[10];
    for (int i = 0; i < 10; i++) cin >> a[i].name >> a[i].score;
    sort(a, a + 10, cmp);
    for (int i = 0; i < 10; i++) cout << a[i].name << " " << a[i].score << endl;
}

(此处还有一个C++知识:如果已经定义结构体node,那么 struct node a[10]; 和 node a[10]; 都是合法的)

以上就是详解C++ sort函数的cmp参数的详细内容,更多关于C++ sort函数的cmp参数的资料请关注编程网其它相关文章,希望大家以后多多支持编程网

--结束END--

本文标题: 详解C++ sort函数的cmp参数

本文链接: https://www.lsjlt.com/news/135009.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解C++ sort函数的cmp参数
    目录1、升序排序2、降序排序3、结构体的排序实例前言: 学算法的第一天你在学冒泡、桶排 在你还没搞明白快排和归并的时候 你已经学到了数据结构最后的堆排序和希尔排序 可以说排序是很多竞...
    99+
    2024-04-02
  • python中sort()方法的cmp参数是什么
    小编给大家分享一下python中sort()方法的cmp参数是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! “如果希望元...
    99+
    2024-04-02
  • python 的sort()函数详解
    1.函数sort()是对列表就地排序 >>> x=[8,9,0,7,4,5,1,2,3,6]>>> x.sort()>>> print(x)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]   2.函数sort()修改序列,不返...
    99+
    2023-10-01
    python 开发语言 后端
  • C++sort排序函数用法详解
    目录用法两个参数用法三个参数string 使用反向迭代器来完成逆序排列最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用...
    99+
    2024-04-02
  • C++ 函数的默认参数和可变参数详解
    c++++ 默认参数允许为函数参数设置默认值,而在可变参数中,可以为函数提供任意数量的参数。具体而言:默认参数:允许在函数声明时为参数指定默认值,在调用时如果没有提供值则使用默认值。可变...
    99+
    2024-04-19
    编程 c++
  • C++ 函数参数详解:高阶函数中参数传递的范例
    c++++ 中有两种参数传递机制:传值传递和传址传递。传址传递将对象的内存地址传递给函数,而传值传递将值的副本传递给函数。高阶函数是接受函数作为参数的函数,其参数传递需要特别注意,因为传...
    99+
    2024-04-27
    c++ 函数参数 标准库
  • C++ 函数参数详解:函数重载中参数传递的影响
    在 c++++ 函数重载中,函数参数的传递方式会影响函数重载的行为。影响如下:1. 传值:只关心参数数量和顺序;2. 传引用:考虑参数类型;3. 传指针:不考虑参数类型。实战中,理解传递...
    99+
    2024-04-27
    c++ 函数重载 参数传递
  • 带你了解C++中的sort函数
    目录sort( ) char型数组char型数组总结sort( ) 使用方法: sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填)) 必须加上头文件...
    99+
    2024-04-02
  • C++ 函数参数详解:函数式编程中参数传递的思想
    c++++ 函数中参数传递有五种方式:引用传递、值传递、隐式类型转换、const 参数、默认参数。引用传递提高效率,值传递更安全;隐式类型转换自动将其他类型转换为函数期望的类型;cons...
    99+
    2024-04-28
    c++ 函数参数 隐式类型转换 隐式转换
  • python中sort()函数用法详解
    目录1.函数sort()是对列表就地排序2.函数sort()修改序列,不返回任何值3.sorted()函数会返回一个排序列表,不改变原有序列4.函数sort()是升序排序,如何降序排...
    99+
    2024-04-02
  • C语言可变参数函数详解
    目录C语言可变参数函数总结C语言可变参数函数 C 语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function)。这种函数需要固定数量的强制参数(manda...
    99+
    2024-04-02
  • c语言cmp函数怎么使用
    在C语言中,可以使用cmp函数来比较两个元素的大小。该函数需要自定义实现,因为C语言本身不提供cmp函数。cmp函数应该返回一个整数...
    99+
    2023-09-16
    c语言
  • C++ 函数参数详解:参数类型推导与模板函数的使用
    c++++ 参数类型推导和模板函数:参数类型推导: auto 关键字可自动推断参数类型,简化声明并增强可读性。模板函数: 可接受不同类型数据,根据类型执行不同操作,语法:template...
    99+
    2024-04-27
    c++ 函数参数
  • C语言main()函数的参数问题详解
    #include<stdio.h> void main(int argc, char* argv[]) { while (argc > 1) { ++a...
    99+
    2024-04-02
  • C++函数的默认参数详情
    文章转自微信 公众号:Coder梁(ID:Coder_LT) C++当中的支持默认参数,如果你学过Python,那么想必对此不会陌生。C++中的默认参数的用法和Python基本一致...
    99+
    2024-04-02
  • c++中sort函数用法
    c++ 中的 sort 函数对容器元素进行原地排序。它接收容器范围和可选比较函数,默认按升序排序,传递自定义函数可按不同规则排序。 C++ 中的 sort 函数用法 sort 函数是 ...
    99+
    2024-04-26
    c++ 排列 标准库
  • C++ 函数参数详解:引用参数的深浅拷贝差异
    在 c++++ 中,传递给函数的参数可分为值传递和引用传递。引用参数有两种类型:浅拷贝引用和深拷贝引用。浅拷贝引用将引用本身传递给函数,允许函数修改原有对象。深拷贝引用传递引用参数所引用...
    99+
    2024-04-26
    c++ 函数参数 引用参数
  • Python 列表 sort()函数使用详解
    「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 sort函数使...
    99+
    2023-09-13
    python 人工智能 网络安全 机器学习
  • C++详细分析讲解函数参数的扩展
    目录一、函数参数的默认值二、函数占位参数三、小结一、函数参数的默认值 C++ 中可以在函数声明时为参数提供一个默认值当函数调用时没有提供参数的值,则使用默认值参数的默认值必须在函数声...
    99+
    2024-04-02
  • python中函数的参数详解
    目录一、参数的定义1、函数的参数在哪里定义2、带参数的函数调用:二、参数分类1、根据实参进行分类1.1、位置参数(未命名参数)1.2、关键字参数(命名参数)2、根据形参进行分类2.1...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作