sort是c++标准库中提供的排序算法,即快速排序。
1.需要有序数据
- 范围查询:如果题目要求对数据进行范围查询(如查找某个范围内的数),预先对数据进行排序可以提高查询效率。
- 中位数问题:查找数组的中位数等问题,通常需要先将数组排序。
2. 贪心算法
- 任务调度:在贪心算法中,常常需要先将任务按某种属性(如截止时间、优先级等)排序,然后再进行处理。
- 活动选择问题:在选择活动(如会议室安排)时,通常需要按结束时间排序,以便选择最多的活动。
3. 动态规划
- 背包问题:某些背包问题(如按重量排序)可以通过排序来优化处理顺序。
4. 图算法
- 最小生成树(MST):如 Kruskal 算法需要先对图的边按权重排序,才能有效地构建最小生成树。
- 最短路径:在某些图算法中,对节点或边进行排序可以优化算法性能。
5. 字符串匹配
- 后缀数组:在处理字符串匹配问题时,后缀数组是一个重要的数据结构,通常需要对后缀进行排序。
6. 数据统计
- 中位数和众数:在统计数据的中位数或众数时,排序是常见的预处理步骤。
- 频率统计:对数据进行排序,再进行频率统计,可以更有效地发现数据的模式。
7. 搜索问题
- 二分查找:如果题目需要频繁进行查找操作,且数据量大,可以先对数据排序,然后使用二分查找来提高效率。
8. 组合优化问题
- 排列组合:在处理排列组合问题时,排序可以帮助生成有序的排列或组合,便于后续处理。
默认从小到大
#include <iostream>
#include <algorithm> //必须包含该头文件
#include <vector>
using namespace std;
void test01()
{
vector<int> vec = {6, 9, 3, 4, 2, 7, 1, 5, 8};
sort(vec.begin(), vec.end()); //默认升序
}
从大到小排序
sort(vec.begin(), vec.end(), greater<int>());
也可以自定义函数进行从高到底排序
bool cmp(int a,int b)
{
return a<b;
}
sort(a,a+n,cmp);
标签:sort,中位数,算法,查找,vec,排序
From: https://blog.csdn.net/2301_81188158/article/details/143096981