基本用法
sort
函数是 C++ 标准库中的一个强大的排序算法,通常实现为快速排序。这个函数定义在 <algorithm>
头文件中。sort
可以对一个序列进行排序,使之按照升序排列。基本语法如下:
1 2
| sort(RandomAccessIterator first, RandomAccessIterator last); sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
|
first
和 last
是定义待排序序列的随机访问迭代器。
comp
是一个可选的比较函数或者函数对象,用于自定义排序顺序。
特点和注意事项
- 时间复杂度:
sort
的平均时间复杂度是 O(n log n),其中 n 是[first, last)范围内元素的数量。
- 随机访问迭代器:
sort
需要随机访问迭代器,因此适用于 std::vector
、std::deque
、数组等,但不适用于 std::list
。
- 稳定性: 标准库中的
sort
不保证排序的稳定性。如果需要稳定排序,可以使用 stable_sort
。
- 自定义排序: 通过提供比较函数,可以实现自定义排序逻辑。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <iostream> #include <vector> #include <algorithm>
int main() { std::vector<int> v = {4, 2, 5, 1, 3};
std::sort(v.begin(), v.end());
std::cout << "Sorted array: "; for (int i : v) { std::cout << i << " "; } std::cout << std::endl;
std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; });
std::cout << "Sorted in descending order: "; for (int i : v) { std::cout << i << " "; } std::cout << std::endl;
return 0; }
|
在这个例子中,首先使用 sort
将向量 v
按升序排序,然后使用自定义比较函数将其按降序排序。
这里展示的就是使用自定义匿名函数重新规定排序规则