STL sort函数的使用

时间复杂度为O(nlogn)

头文件

#include<algorithm>
或者
#include<bits/stdc++.h>

内容

我们设我们排序的数组为a,排序区间为[l,r],且从小到大排序。
则调用方法为:
sort(a+l,a+r)
如果我们不想从小到大排序,我们应该写一个比较函数(一般命名为cmp)来改变排序方法:
例如,我们想要把应该类型为int的数组从小到大排序,我们应该这么定义这个比较函数:

bool cmp(int a,int b)
{
	return a>b;
}

我们只需要定义两个与数组类型相同的变量作为参数,再返回两个数字的比较就可以了。

重点

如果是从小到大排序,就用小于号连接两个数;
如果是从大到小排序,就用大于号连接两个数;

简记为:大于号代表从大到小,小于号代表从小到大

写完这个函数,我们只需要在调用sort函数时在第三个参数写上函数名(例如:sort(a+l,a+r,cmp);)

同样,结构体也可以用它排序

例如我们定义一个结构体

struct node
{
int x,y;
}c[1000];

此时,我们需要对c进行排序,x更大的在前面,如果x相同则y更大的在前面
此时,我们可以这样写比较函数:

bool cmp(node a,node b)
{
	if(a.x!=b.x)
	{
	return a.x>b.x;
	}
	return a.y>b.y;
}
注意,在结构体排序中,必须创建比较函数,否则会编译错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值