首页 > 编程笔记 > C++笔记 阅读:1

C++ sort()函数的用法(附带实例)

sort() 函数是 C++ STL 中一个功能强大的排序工具,定义于头文件 <algorithm> 中。

sort() 函数可以高效地对容器内的元素进行排序,支持升序和降序排列,并兼容多种容器类型(如数组、向量和列表等)。

为了演示它的功能,我们使用万能头文件,并沿用标准命名空间,旨在简化代码结构,提高编码效率。
#include<bits/stdc++.h>
using namespace std;
接下来,我们定义一个自定义的比较函数。在这里,我们选择使用 C++11 中的 Lambda 表达式(或称为匿名函数),它提供了一种更简洁的方式来定义函数。相较于传统的函数,Lambda 表达式无须提前声明或定义,可以直接在代码中嵌入使用,这一特性显著提高了代码的灵活性和可读性。

以下是我们定义的 Lambda 表达式:
auto compare = [](int a, int b) { return a > b; };

再创建一个数组并对其进行排序:
int main() {
    vector<int> v = {3, 2, 5, 1, 6, 4};          // 初始化一个整数向量
    sort(v.begin(), v.end(), compare);           // 使用自定义比较函数进行排序
    for (int num : v) cout << num << " ";        // 输出: 6 5 4 3 2 1
    return 0;                                    // 程序结束
}
STL 的 sort() 函数是基于快速排序(Quicksort)实现的混合版本,结合了多种优化算法,以在不同情况下保持较高的效率,该函数的时间复杂度是 O(n logn),其中 n 是要排序的元素数量。这是任何基于比较的排序算法所能达到的理论最低时间复杂度。同时,sort() 函数经过高度优化,它的常数因子也非常小,使得它在实际应用中表现优异。

需要注意的是,sort() 函数并不是稳定排序算法,也就是说,排序后相等的元素可能会改变它们的原始顺序。如果需要稳定排序算法,可以使用 stable_sort() 函数,它能够在排序过程中保持相等元素的相对位置不变。

最后,由于 sort() 函数使用了随机访问迭代器,因此适用于数组和向量等支持随机访问的容器,但不能用于 list 或 forward_list 这类不支持随机访问迭代器的容器。

相关文章