浅谈C++的sort函数用法

2023-07-28 21:29:35 浏览数 (1)

sort简介

头文件为algorithm,其排序方式类似于快速排序,比冒泡选择之类的小杂鱼高级。

函数调用形式为:

sort(参数a,参数b,参数c);

参数a是待排序数组的起始位置,参数b是待排序数组的末位置,参数c是一个函数,决定排序的规则,不写默认从小到大排序。

对于这么一个待排序的数组a:

代码语言:javascript复制
int a[6]={1,3,6,2,4,5};

我们有三种方式排序。

一、默认排序

直接用sort,就是从小到大排序。

代码语言:javascript复制
sort(a,a 6);

二、参数排序

写入第三个参数。

从小到大排序:

代码语言:javascript复制
sort(a,a 6,less<int>());

从大到小排序:

代码语言:javascript复制
sort(a,a 6,greater<int>());

三、自定义排序规则

由于sort函数的第三个参数是以函数形式的方式传入,所以,可以自己写函数,定义排序规则。

从大到小排序:

代码语言:javascript复制
bool just_a_name(int a,int b)
{
	return a>b;
}
sort(a,a 6,just_a_name);

这个功能非常好用,记得总有OJ题目经常要排序学生成绩,科目多,人数也多,要排序结构体数组,登峰造极的是PTA的德才论德才论 坑详解_心 灵 骇 客的博客-CSDN博客

我记得第一次写了两百多行的代码,用的是冒泡排序,死活过不了,后来今天用了sort函数去写,只用了六十多行代码就搞定了。

其中排序结构体数组的sort排序规则函数代码:

代码语言:javascript复制
bool compare(score a,score b)
{
	if(a.sum!=b.sum)
	return a.sum>b.sum;
	if(a.de!=b.de)
	return a.de>b.de;
	return a.id<b.id;	
}
sort(a,a i,compare);

四、排序字符数组

代码语言:javascript复制
char a[6]="asdfg";

从小到大排序: 

代码语言:javascript复制
sort(a,a 5,less<char>());

从大到小排序: 

代码语言:javascript复制
sort(a,a 5,greater<char>());

0 人点赞