栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++常用函数之sort函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++常用函数之sort函数

C/C++虽然以前学校用过,但是很多STL函数还是不熟悉,遇到一个记录一个吧。


1、sort()函数是C++标准库中的排序函数,头文件为algorithm

2、sort()函数时间复杂度:

我们最熟悉的冒泡排序和选择排序的时间复杂度过高o(n*n),不能满足我们写题的需要。sort函数的排序方法类似于快排方法,时间复杂度为n*log2(n)

3、sort()函数的参数

sort(起始地址,结束地址,比较器);        其中比较器可以省略,默认升序

int arr[10]={5,3,6,0,2,8,2,6,9,11};
sort(arr,arr+10);

带比较器的写法(比较器可以根据自身的需要来写,当返回true时):

//首先我们要写一个bool类型的方法,用来返回参数的比较结果
//当比较器返回true时,第一个参数放在前面,第二个参数放在后面,即位置不变
//当比较器返回false时,为两元素交换位置
//这里要注意对参数相等时的处理
//因为可能会在两者相等的时候交换位置,在一些特定的环境下会导致题解出错
bool cmp1(int lhs,int rhs)//升序
{
	return lhsrhs;
}
sort(arr,arr+10,cmp1);//升序
sort(arr,arr+10,cmp1);//降序

4、对vector排序

vector vec={5,3,6,0,2,8,2,6,9,11};
//比较器同对数组排序
sort(vec.begin(),vec.end(),cmp1);
sort(vec.begin(),vec.end(),cmp2);

5、对map进行排序

这里要注意,map函数有一个按key值进行的自动排序功能(升序)

typedef pair PAIR;
//比较器
//按value值进行降序排序,value值相等key小的在前
bool cmp_value(const PAIR& lhs,const PAIR& rhs)
{
	if(lhs.second == rhs.second)
	{
		return lhs.key rhs.second;
}
sort(m.begin(),m,end(),cmp_value);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号