我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

【C++】sort函数详解-创新互联

1、sort()函数是C++标准库中的排序函数,头文件为algorithm
2、sort()函数时间复杂度:
我们最熟悉的冒泡排序和选择排序的时间复杂度过高,不能满足我们写题的需要。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时,为两元素交换位置
//这里要注意对参数相等时的处理
//因为可能会在两者相等的时候交换位置,在一些特定的环境下会导致题解出错
//比较器最好写成static函数
//比较器的值可以使用引用类型,节省空间开销
static bool cmp1(int &lhs,int &rhs)//升序
{return lhsreturn lhs>rhs;
}
sort(arr,arr+10,cmp1);//升序
sort(arr,arr+10,cmp1);//降序

4、对vector排序

vectorvec={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 pairPAIR;
//比较器
//按value值进行降序排序,value值相等key小的在前
static bool cmp_value(const PAIR& lhs,const PAIR& rhs)
{if(lhs.second == rhs.second)
	{return lhs.keyrhs.second;
}
sort(m.begin(),m,end(),cmp_value);

6、不使用手写的cmp函数

sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则:
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序

sort(arr,arr+10,less());

7、lamdba形式的比较器

//lamdba形式
[](int &a,int &b){return areturn a

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站标题:【C++】sort函数详解-创新互联
本文来源:http://shouzuofang.com/article/iojdc.html