C++之sort函数

12 篇文章 0 订阅

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时,为两元素交换位置
//这里要注意对参数相等时的处理
//因为可能会在两者相等的时候交换位置,在一些特定的环境下会导致题解出错
bool cmp1(int lhs,int rhs)//升序
{
	return lhs<rhs;
}
bool cmp2(int lhs,int rhs)//降序
{
	return lhs>rhs;
}
sort(arr,arr+10,cmp1);//升序
sort(arr,arr+10,cmp1);//降序

4、对vector排序

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

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。

由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的 点击我的Gitee获取
还有 高级java全套视频教程 java进阶架构师 视频+资料+代码+面试题!

全方面的java进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言中的sort函数是一个用来对容器或普通数组中指定范围内的元素进行排序的函数。它包含在C标准库的头文件为#include <algorithm>中。sort函数是基于快速排序算法实现的(类似于C语言的qsort函数)。 sort函数有两种形式的函数原型: 1. void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp); 2. void sort(RandomAccessIterator first, RandomAccessIterator last); 其中,第一种形式可以通过比较函数comp来指定元素的排序顺序。如果comp函数返回的是true,表示第一个参数应该在前面,否则应该在后面。当comp为空时,sort函数会默认按升序进行排序。 sort函数的返回值是void,即没有返回值。 下面是一个使用sort函数对int数组进行排序的示例代码: ``` #include <iostream> #include <algorithm> using namespace std; int main(){ int a[] = {33, 12, 20, 66, 90, 11, 20, 4, 5, 50}; sort(a, a + 10); // 默认升序排序 for(int i = 0; i < 10; i++){ printf("%d ", a[i]); } return 0; } ``` 以上代码将数组a中的元素按从小到大的顺序进行排序,并输出结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C++——sort函数](https://blog.csdn.net/qq_43448856/article/details/122656959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [通过c++的sort函数实现成绩排序功能](https://download.csdn.net/download/weixin_38677260/12743047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值