C++ sort()函数详解
在 C++ 标准库中,提供了 4 个用于对数据进行排序的函数,分别是 sort(),stable_sort(),partial_sort() 和 partial_sort_copy(),本节先带领大家了解 sort() 函数。
sort() 函数定义在
sort() 函数的语法格式如下:
使用 sort() 函数,有以下几点需要注意:
【实例】下面的 C++ 程序演示了 sort() 函数的功能和用法。
sort() 函数定义在
<algorithm>
文件中,用于对指定范围内的元素进行排序。默认情况下,它会对元素进行升序排序,当然也可以通过提供自定义的比较函数或函数对象来自定义排序规则。sort() 函数的语法格式如下:
void sort (RandomAccessIterator first, RandomAccessIterator last); void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
- first 和 last:都是随机访问迭代器,用于指定要排序的数据范围 [first, last)。
- comp:一个返回布尔值的比较函数或函数对象,用于自定义排序规则。
使用 sort() 函数,有以下几点需要注意:
- sort() 函数要求传入的迭代器实参必须是随机迭代器,这就意味着,并不是所有容器都可以使用 sort() 函数,例如关联式容器仅支持双向迭代器,list 容器也仅支持双向迭代器,它们都不适用 sort() 函数。
- 默认情况下 sort() 函数是用"<" 小于运算符比较各个元素实现升序排序的,因此 [first, last) 范围内的元素必须支持用"<"进行比较。
- sort() 不是稳定的排序算法,即它无法保证相等元素的相对位置保持不变。对于稳定的排序,可以考虑使用 stable_sort() 函数。
【实例】下面的 C++ 程序演示了 sort() 函数的功能和用法。
#include <iostream> #include <vector> #include <algorithm> bool customCompare(int a, int b) { return a > b; // 降序排序 } int main() { std::vector<int> data = {9, 3, 6, 1, 7, 4, 5}; // 默认排序:升序 std::sort(data.begin(), data.end()); std::cout << "Ascending order: "; for(int num : data) { std::cout << num << " "; } std::cout << std::endl; // 使用自定义比较函数:降序 std::sort(data.begin(), data.end(), customCompare); std::cout << "Descending order: "; for(int num : data) { std::cout << num << " "; } std::cout << std::endl; return 0; }执行结果为:
Ascending order: 1 3 4 5 6 7 9
Descending order: 9 7 6 5 4 3 1