ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++中sort排序之自定义排序cmp(入门)

2020-02-02 21:00:30  阅读:1058  来源: 互联网

标签:sort return 自定义 int 降序 bool 排序 cmp


咳咳,第一次写这种博客,介绍一下sort的自定义排序cmp函数:

sort和cmp的实现需要的头文件有:

#include<algorithm>

using namespace std;

sor()是C++标准库中的排序函数,使用很方便,传进去数组的起始和结束地址就行,注意是左闭右开,默认的排序是<,从小到大,不过可以自己写一个cmpare()来自定义,下面缩写cmp()函数。
cmp()函数的返回值要是bool,核心之处也是比较,因为sort默认是从小到大,所以在cmp如果还是要从小到大,那就a < b,返回值bool为true,不改变;而如果想要从大到小排,那么就要return a > b,因为默认a小于b,所以此时返回的bool就是false,要改变排序。

如果你不懂的话  ,不,聪明的你肯定懂了。下面我先给一个例子:

eg;

#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;//从大到小排序
}

当然如果定义的是一个结构体想进行排序,也是一样的

eg;

#include<algorithm>
using namespace std;
struct node//结构体定义 
{
    int a;
    int b;
    int c;
};
bool cmp(node x,node y)//这个cmp是先按照a进行降序排序,如果a相同然后对b升序排序,如果b相同最后对c降序排序 
{
    if(x.a!=y.a)
    return x.a<y.a;
    if(x.b!=y.b)
    return x.b>y.b;
    if(x.c!=y.c)
    return x.c<y.c;
}

这个cmp是先按照a进行降序排序,如果a相同然后对b升序排序,如果b相同最后对c降序排序 。是不是很简单,这只是比较低级的自定义排序

先附上一道例题:

http://www.fjutacm.com/Problem.jsp?pid=1214

题解:https://www.cnblogs.com/YHH520/p/12253112.html 不用谢我(逃)

https://www.dotcpp.com/oj/problem1568.html  题解:https://paste.ubuntu.com/p/c8wD8BWwg2/ 至于cmp的进阶我也不是太了解,等以后遇到问题了再说吧,够用就行,后面再更新哦!溜了溜了。 文中的问题可以到评论区评论,收到消息后,我会及时改正哦!

标签:sort,return,自定义,int,降序,bool,排序,cmp
来源: https://www.cnblogs.com/YHH520/p/12253671.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有