三分钟带你读懂C++中的排序方式
·
在 C++ 中,有多种方式可以用于排序,每种方法都有其适用场景。以下是几种常见的排序方式:
1. 使用标准库中的 sort 函数
C++ STL(标准模板库)提供了 <algorithm> 头文件中的 sort 函数,这是最常用的排序方法。它使用快速排序(通常在平均情况下)或堆排序(在最坏情况下)进行排序。
2. 使用自定义比较函数
sort 函数允许你通过提供自定义比较函数来控制排序方式。
3. 使用 partial_sort
如果你只需要数组中的一部分有序,可以使用 partial_sort。
4. 使用 stable_sort
如果你需要稳定的排序(即相等元素的原始顺序保持不变),可以使用 stable_sort。
5. 使用 nth_element

如果你只需要找到第 n 个最小(或最大)元素,可以使用 nth_element。它比 partial_sort 更高效,因为它只需要部分排序。
sort 有两个重载版本,其中前两个参数分别是首迭代器和尾迭代器的后一个位置。而根据是否有第三个参数,分为两个版本。我们主要使用第二个版本展示。
#include <algorithm>
template <typename _RandomAccessIterator>
inline void sort(_RandomAccessIterator __first, _RandomAccessIterator __last);
template <typename _RandomAccessIterator, typename _Compare>
inline void sort(_RandomAccessIterator __first, _RandomAccessIterator __last,
_Compare __comp);
仿照 C 语言的 ,使用普通函数来定义规则。
但这里的规则是更加的人性化,我们需要比较两个 型数据,那参数就写成 。比较大小一般在 C++ 中就是比较谁更小,因此直接返回一个 即可。
#include <algorithm>
#include <climits>
#include <vector>
bool cmp(const int& a, const int& b) {
return a < b;
}
int main(void) {
std::vector<int> arr = {INT_MAX, INT_MIN, -1, 0, 1};
std::sort(arr.begin(), arr.end(), cmp);
}更多推荐


所有评论(0)