c++ sort函数使用详细指南

72 篇文章 12 订阅
订阅专栏

转自:https://blog.csdn.net/OpenStack_/article/details/88371505

标准模板库STL中的sort()函数,时间复杂度为n*log2(n),执行效率较高。

用法

①、sort()函数可以三个参数也可以两个参数;
②、必须的头文件 #include < algorithm>和using namespace std。
③、它使用的排序方法类似于快排,时间复杂度为n*log2(n)

sort()函数有三个参数:(第三个参数可不写)
(1)第一个是要排序的数组的起始地址。
(2)第二个是最后一位要排序的元素的下一位的地址。
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

sort函数,左闭右开,即 int a[10]={2,4,1,23,5,76,0,43,24,65}。 sort(a,a+10)。

两个参数时

#include<iostream>
#include <algorithm>
using namespace std;
 
int main(){
 	int a[10]={2,4,1,23,5,76,0,43,24,65};
 	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
 	cout<<endl;
	  	
	sort(a,a+10);     //STL中sort函数
 	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
	return 0;
}

输出结果是升序排列。(两个参数的sort默认升序排序)

在这里插入图片描述

三个参数时

①、加入一个比较函数 complare():

#include<iostream>
#include <algorithm>
using namespace std;
 
bool complare(int a,int b){
	return a>b;
} 
 
int main(){
 	int a[10]={2,4,1,23,5,76,0,43,24,65};
 	
	//打印原数组 
	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
 	cout<<endl;
	
	//排序  	
	sort(a,a+10,complare);
 	
	//打印排序后的数组 
	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
	return 0;
}

在这里插入图片描述

②、使用 less<数据类型>(),或 greater<数据类型>():
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序

#include<iostream>
#include <algorithm>
using namespace std;
 
int main(){
 	int a[10]={2,4,1,23,5,76,0,43,24,65};
 	
	//打印原数组 
	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
 	cout<<endl;
	
	//排序  	
	sort(a,a+10,greater<int>());
 	
	//打印排序后的数组 
	for(int i=0;i<10;i++){
 		cout<<a[i]<<" ";
 	}
	return 0;
}

在这里插入图片描述

③、对向量vector排序:
1、使用 sort(vec.begin(),vec.end())排序;
2、使用sort(vec.begin(),vec.end(),greater())排序。

vector vec(arr,arr+10); // 用数组元素初始化vector容器,左闭右开,即+元素数量 。
sort(vec.begin(),vec.end(),greater()); // <>里面只需装容器所容纳的元素的类型

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
 
int main(){
	int arr[10]={5,6,1,9,3,7,3,1,0,8};
	
    //vector容器存放arr数组中的元素 
	vector<int> vec(arr,arr+10);   //经典!用数组元素初始化vector容器,左闭右开,即+元素数量 
	for(int i=0;i<vec.size();i++){
		cout<<vec[i]<<" ";
	} 
	cout<<endl;
	
	//使用默认排序方法: 
	sort(vec.begin(),vec.end());
	cout<<"使用默认排序方法:    ";
	for(int i=0;i<vec.size();i++){
		cout<<vec[i]<<" ";
	}
	cout<<endl;			 
	
	//使用greater<>()规则: 
	sort(vec.begin(),vec.end(),greater<int>());  //这就很神奇了!!!
	
	cout<<"使用greater<>()规则: ";
	for(int i=0;i<vec.size();i++){
		cout<<vec[i]<<" ";
	} 
	
	return 0;	
}

在这里插入图片描述

③、对字符数组进行排序:

#include<iostream>
#include<algorithm>
using namespace std;
 
int main(){
	char arr[11]="asdfghjklk";
	
	sort(arr,arr+10,greater<char>());
	
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	} 
	
	return 0;	
}

在这里插入图片描述

④、对字符串排序:

#include<iostream>
#include<algorithm>
using namespace std;
 
int main(){
	string arr="asdfghjklk";
	
	sort(arr.begin(),arr.end(),less<char>());
	
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	} 
	
	return 0;	
}

在这里插入图片描述

⑤、 对结构体排序:
1、自定义规则;
2、运算符重载。

1.自定义规则

#include<iostream>
#include<algorithm>
using namespace std;
 
struct student{
	string name;
	int age;	
};
 
//自己定义的规则:按姓名从小到大排列,若姓名一样,按年龄从小到大排列 
bool comp(student s1,student s2){
	if(s1.name==s2.name){
		return s1.age<s2.age;
	}
	else{
		return s1.name<s2.name;
	}
}
 
int main(){
    student s[100];
    s[0].name="zhangsan";s[0].age=19;
    s[1].name="zhangsan";s[1].age=18;
    s[2].name="lisi";s[2].age=20;
    sort(s,s+3,comp);//左闭右开,所以是对s[0]到s[2]排序 
    
	for(int i=0;i<3;i++){
        cout<<s[i].name<<" "<<s[i].age<<endl;
    }
		
	return 0;	
}

在这里插入图片描述

2.重载运算符

bool operator < (const student &s) const

#include<iostream>
#include<algorithm>
using namespace std;
 
struct student{
	string name;
	int age;
	
	bool operator < (const student &s)const{//符号重载 
        if(name==s.name){
            return age<s.age;
        }
        else{
            return name<s.name;
        }
    }
};
 
int main(){
    student s[100];
    s[0].name="zhangsan";s[0].age=19;
    s[1].name="zhangsan";s[1].age=18;
    s[2].name="lisi";s[2].age=20;
    sort(s,s+3);//左闭右开,所以是对s[0]到s[2]排序 
    
	for(int i=0;i<3;i++){
        cout<<s[i].name<<" "<<s[i].age<<endl;
    }
		
	return 0;	
}

在这里插入图片描述

string 使用反向迭代器来完成逆序排列

#include <iostream>
using namespace std;
 
int main()
{
	string str("cvicses"); //用()对字符串赋值 
	string s(str.rbegin(),str.rend());  //反向迭代器,将字符串str翻转,赋值给字符串s 
	
	cout << s <<endl; //打印字符串s 
	return 0;
}

在这里插入图片描述

C++sort函数使用方法
dong307620235的博客
04-26 1361
一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort (RandomAccessIterator first, RandomAccessIterator last, Compa...
c++ sort函数使用方法
qq_66039521的博客
01-30 1万+
1、使用sort函数头文件需要#include< algorithm >2、sort模板含三个参数sort (begin,end,cmp) 参数begin:要排序数组的起始地址(第一个数据的地址) 参数end:最后一个数据的下一个数据的地址 参数cmp:若这个参数不写,默认为升序 3、cmp参数不写,默认升序 或者cmp函数里写return a<b,也是升序 4、cmp函数里写return a>b,实现降序 5、其实排序完全可以不用自己写cmp函数就可.
C++算法:sort()函数
最新发布
weixin_66512566的博客
08-07 686
sort()函数主要是用于实现快速的排序的算法,其主要是由三部分组成,它有三个参数sort(begin,end,cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个指针,cmp参数排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。//设置月饼种类的结构体//库存量int price;//单个月饼的价格}A[MAX];
C++自带sort函数的用法
热门推荐
PrConstantin
12-10 4万+
C++sort()函数的用法 近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧! (一)为什么要用c++标准库里的排序函数 Sort()函数c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高! (二)
C++ sort函数的用法
chickcai的博客
05-24 3375
sort函数C++的一种排序方法,包含在头文件为#include的C++标准库中 sort函数使用模板: sort(start,end,排序方法) 一.sort函数没有第三个参数,此时默认由小到大排序 #include<iostream> #include<algorithm> using namespace std; int main() { int a[5] = { 4,3,2,1,0 }; for (int i = 0; i < 5; i++) { cout &
C++ sort函数用法
记录计算机学习路程
08-28 5385
`sort`函数还可以接受一个谓词,用于指定排序方式。sort函数C++标准库中的一个排序算法,头文件是algorithm,用于对容器中的元素进行排序。:默认情况下,`sort`函数按照升序排序,如果需要按照降序排序,可以使用`greater`函数对象作为比较函数。:除了对整个容器进行排序,还可以指定排序的范围。通过指定起始和结束的迭代器,可以只对容器中的部分元素进行排序。// 对容器中的前半部分元素进行排序。// 对容器中的后半部分元素进行排序。// 使用自定义比较函数进行排序
C++中的sort函数用法
Ina的博客
02-14 4046
C++sort函数 用法: 头文件: #include 参数:两个参数或三个参数 使用排序方法是类似于快速排序的方法,时间复杂度为 n*log2(n); sort函数有三个参数:(第三个参数可以不写) 第一个是要排序的数组的起始地址; 第二个是结束的地址; 第三个参数排序的方法,可以是[降序]、也可[升序],还可以不写第三个参数、此时默认[升序]排序。 两个参数用法: #...
C++函数库和Linux函数库.zip
08-24
本压缩包包含的资源是关于C++函数库和Linux C函数库的详细参考手册,对于开发者来说是极其宝贵的资料。 首先,我们来看"C++函数手册 (LibraryFunctions).chm"。这个手册涵盖了C++标准库,它是C++编程的核心部分。...
c++函数大全
09-21
"C++函数大全"是一份重要的参考资料,为开发者提供了详尽的C++函数介绍和使用指南。CHM(Compiled Help Manual)文件是微软推出的一种帮助文档格式,它将HTML文档集合在一起并进行了编译,方便用户快速查找和阅读...
C++标准模板库指南_C++_
10-03
以下是对C++ STL详细指南。 1. 容器: STL中的容器是用于存储和管理对象的数据结构。它们包括: - `vector`:动态数组,支持随机访问和高效插入/删除尾部元素。 - `deque`:双端队列,支持两端的插入和删除,...
C++ STL标准程序库开发指南 源代码.rar
06-24
这个压缩包“C++ STL标准程序库开发指南 源代码.rar”包含了C++ STL的源代码,对于学习和理解STL的内部实现机制非常有帮助。下面我们将深入探讨STL的关键组件、它们的工作原理以及如何通过源代码进行学习。 1. **...
C++函数手册
09-17
C++函数手册》是一本全面且详细C++函数参考指南,它涵盖了C++语言中的标准库函数,以及C++编程实践中常用的自定义函数。这本书是离线版本,无需网络即可查阅,对于开发者来说,是一个非常实用的工具。 C++是一...
C++sort函数用法
weixin_45938281的博客
01-29 1193
C++sort函数用法介绍最简单的排序利用sort进行降序排序使用自带greater进行排序手写cmp函数cmp函数进阶对结构体进行排序 介绍 利用sort对数组进行排序需要用到下面这个头文件 #include <algorithm> sort默认对数组进行升序排序,通过自定义函数可以实现多种功能排序,也可以对字符串进行排序。 最简单的排序 对a[] = {5, 4, 3, 2, ...
C++sort函数的用法
2301_79546101的博客
02-17 1372
/ 可以简单理解为 > 降序排列;< 升序排列int main()//自定义排序实现降序int i;for(i=0;i<10;
C++sort函数的用法
gaosaixing的博客
08-22 1533
使用函数只需用#include sort即可使用,语法描述为: sort(begin,end),表示一个范围,例如: int _tmain(int argc, _TCHAR* argv[]) {  int a[20]={2,4,1,23,5,76,0,43,24,65},i;  for(i=0;i   cout  sort(a,a+20);  for(i=0;i  c
C/C++ sort函数的用法
开飞机的小毛驴儿
04-13 1357
STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件#include这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。
C++sort()函数用法
Fairy_CYX的博客
02-15 5532
sort函数使用方法
C++SORT函数使用方法
小世儿的博客
08-06 1万+
一.sort函数 1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑! 2.sort函数的模板有三个参数: void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp); (1)第一个参数first:是要排序的数组的起始地址。 (2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址) (3)第三个
C++常用函数与头文件速查指南
本文将详细介绍C++编程语言中的一些常用函数以及它们对应的头文件,这对于理解和编写C++程序至关重要。了解这些函数及其头文件可以帮助开发者更有效地查找和使用功能,提高开发效率。 C++标准库提供了丰富的函数和...
写文章

热门文章

  • 【git基础】git merge使用简介 98622
  • 【基础知识】tiff格式图片介绍及读取 39102
  • 【深度学习】显卡驱动, cuda, cudnn的关系与版本对应问题 16126
  • 【python第三方库】pyinstaller使用教程及spec资源文件介绍 14619
  • 【python】使用conda或pip 导出及安装requirements.txt 14477

分类专栏

  • 【C/C++】 72篇
  • 【python】 43篇
  • 【pytorch】 35篇
  • 【Linux相关】 16篇
  • 【自动驾驶】 24篇
  • 【嵌入式板端】 7篇
  • 【AI模型训练与部署】 44篇
  • 【CV论文及数学原理】 34篇
  • 【算法与数据结构】 20篇
  • 【LeetCode刷题之旅】 16篇
  • 【面试笔记】 4篇
  • 【备忘录】 47篇

最新评论

  • 【pytorch优化器】Adam优化算法详解

    一只程序媛li: 小白友好,超级赞

  • 【ISP】相机标定及坐标系转换详解

    为梦疯狂: 什么时候不需要内参标定?只需要外参标定,(九点标定)?

  • 【ISP】相机标定及坐标系转换详解

    为梦疯狂: R:3*3 T:3*1为什么这么写

  • 【C/C++】GoogleTest单元测试与代码覆盖率

    qq_43310225: 这个集成工具就是我们团队需要的表情包

  • 【python第三方库】pyinstaller使用教程及spec资源文件介绍

    awz66661: 测试了一下程序图标是可以使用相对路径的

大家在看

  • 基于指纹和六角键盘的门锁系统 122
  • 眼图基础:阅读、分析和应用 971
  • 串行通信协议 - 简介 215
  • COM:链路设计师的实战指南 697
  • ESP32-WROOM-32 [创建AP站点-客户端-TCP透传] 104

最新文章

  • 【坐标变换】旋转矩阵左乘右乘的思考
  • 【模型压缩】模型剪枝详解
  • 【模型压缩】模型压缩的几种方式概述
2024年3篇
2023年10篇
2022年86篇
2021年98篇
2020年34篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王南京网站排名优化学习新上线的网站怎样优化桐城市seo网站优化专业的网站优化外包西安关键词优化网站排名济宁质量好网站优化价格eo网站关键词优化是什么网站密度优化怎么写西藏网站建设推广优化韶关网站整站优化网站设计与优化服务商青山区网站只能优化成都网站关键词推广优化网站产品优化认可y火17星网站搜索排名优化费用临朐网站优化公司小网站怎么优化到高权重苏州网站seo优化排名山东网站seo优化工具上海网站排名优化价格邯郸五金行业网站优化推广桐乡百度网站优化石景山网站优化关键词铝业网站seo优化公司新网站前期怎么优化好网站排名优化招商电话家居网站SEO优化电话吉利汽车网站结构优化深圳优化一个网站辽宁省销售行业网站优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化