c++之 sort()排序
sort()排序
目录
sort()排序
一、原理
二、使用方法
(1)引入头文件
(2)语法
1.方式① (默认)
2.方式②:定义降序
3.对结构体进行排序(后续会继续更新)
一、原理
sort
是标准库提供的一个非常实用的排序函数,位于 <algorithm>
头文件中。sort()并非只是普通的快速排序
,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法
二、使用方法
(1)引入头文件
#include<algorithm>
algorithm意为算法,是c++的标准模板库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模板函数
(2)语法
1.方式① (默认)
sort(begin, end);
begin
和 end
是迭代器,分别指向待排序区间的起始位置和结束位置的下一个位置。将[first, last) 区间内元素升序(从小到大)排列。【注意区间为左闭右开】
例:
对数组进行排序
#include<bits/stdc++.h>
using namespace std;
int main()
{int a[10]={2,6,5,4,1,2,6,10,2,9};sort(a,a+10);for(int i=0;i<10;i++)cout<<a[i]<<" ";return 0;
}
对字符串进行排序
#include<bits/stdc++.h>
using namespace std;
int main()
{string a="fndskjbfirebjk";sort(a.begin(),a.end());cout<<a<<endl;return 0;
}
2.方式②:定义降序
//自定义比较函数
bool compare(int a, int b){return a > b; // 降序排序
}
sort(begin, end, compare);
第一、二个参数同升序,第三个函数功能为自己定义的比较函数。
比较函数的规则是这样的:
如果返回 true,那么第一个参数会被排在第二个参数之前。
如果返回 false,则第一个参数会被排在第二个参数之后。
a > b 是降序的原因:
当我们写 a > b 作为比较函数时,意味着:
当 a 比 b 大时,返回 true,即 a 应该排在 b 的前面。
因为较大的值会被放在较小值的前面,这就形成了降序排列。
例:
具体例子:
假设我们有一组数字 {1, 3, 2}。
当使用 a > b 作为比较函数时:
比较 1 和 3:1 > 3 为 false,因此 3 应该排在 1 前面。
比较 3 和 2:3 > 2 为 true,因此 3 继续保持在前面。
最终的顺序是:3, 2, 1。对比:
如果我们使用 a < b,则会形成升序排序:
当 a 小于 b 时返回 true,所以较小的值会被放在前面,形成升序排列。
因此,a > b 实现了降序排序,而 a < b 实现了升序排序。
3.对结构体进行排序(后续会继续更新)
结构体排序