【C++ STL】sort用法大合集

最近这几天,康康一直在刷一些题目,来保证手感,恰好做到了排序一类的题目,发现sort挺好用的,直接秒杀一些什么冒泡桶排序快排等等,顺便就整理一下吧。


首先呢,讲一下sort最最最基本的格式——

  1.         sort位于#include<algorithm>的头文件中(注意STL都没有.h
  2.         sort格式——sort(a+m,a+n)      //我来解释一下,a是一个数组的前缀,例如a[5],这里的a就是传入首地址往后推移m个单位,一直到第n个单位

               ps:如果m不写,那么就是默认从下标0开始

可能友友们还是不理解,那就准备看下面的小例题。

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int a[5]={1,5,6,7,9};
	sort(a,a+5);
	for(int i=0;i<5;i++)
	cout<<a[i]<<" ";
	return 0;
}

输出结果:

可以发现,这个sort默认就是从小到大的排序方式,可能就会有小伙伴说,假如我想从大到小的顺序排列,怎么去作呢。

这里康康,给大家两点思路,

  1. 可以先直接用这种sort格式,然后逆序输出,完事。
  2. 可以使用进阶版sort

sort进阶款

        同样,先看格式————sort(a+m,a+n,greater<T>())           //greater就是更大的意思,T就是数据的类型,比如我如果是整数,那么T就填int如果是字符,那就填char

       看例题,这就是上面那个例题中的sort稍微变形一下来的

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
	int a[5]={1,5,6,7,9};
	sort(a,a+5,greater<int>());
	for(int i=0;i<5;i++)
	cout<<a[i]<<" ";
	return 0;
}

 这是结果,是吧,简洁明了。

看到这里,可能有些小伙伴绝得还是不够尽兴,康康懂你们,继续往下看


sort究极版

老规矩,献上格式————sort(a+m,a+n,RULE())     //RULE就是你自己定义的规则

RULE的规则定义也有格式具体看下

struct RULE
{
	bool operator()(const T &a1,const T &a2) const     //T和上面的一样,如果是整数就改为int
	{
		return _________;    //填你需要的排序方式
	}
};

如果你还是不理解的,话就看下面的例题吧!

#include<iostream>
#include<algorithm>
using namespace std;
struct RULE
{
	bool operator()(const int &a1,const int &a2) const 
	{
		return a1%10<a2%10;    //这里我想要按照个位数,从小到大排序
	}
};
int main()
{
	int a[5]={19,56,64,72,90};
	sort(a,a+5,RULE());
	for(int i=0;i<5;i++)
	cout<<a[i]<<" ";
	return 0;
}

来见证奇迹的时刻到了

 是不是很为震撼,以前一直用循环和if来判断排序,还学着各种花式排序,帅炸了不是。

希望康康今天分享的东西能对你有帮助,但也希望各位多多支持我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值