浅谈C++的sort函数用法

376 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

sort

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

函数调用形式为:

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

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

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

int a[6]={1,3,6,2,4,5};

我们有三种方式排序。

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

sort(a,a+6);

写入第三个参数。

从小到大排序:

sort(a,a+6,less<int>());

从大到小排序:

sort(a,a+6,greater<int>());

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

从大到小排序:

bool just_a_name(int a,int b)
{
	return a<b;
}
sort(a,a+6,just_a_name);

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

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

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

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);

排序字符数组

char a[6]="asdfg";

从小到大排序: 

sort(a,a+5,less<char>());

从大到小排序: 

sort(a,a+5,greater<char>());