c++项目排序问题

1.std::sort排序

注意点:

1.相等要返回false,不然会报错无效的数值

2.以一定排序规则排序指定范围内的元素,但是算法不具有稳定性,如果元素的值是相同的话不保证它们的相对顺序保持不变

3.平均 O(N·log(N)) 次比较,其中 N = std::distance(first, last) 。  

我们需要注意的是sort()采用的是优化版本的快速排序,在最后阶段采用直接插入排序。因此时间复杂度为O(N·log(N))

#include 
#include 
#include 
#include 
 
int main()
{
    std::array s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3}; 
 
    // 用默认的 operator< 排序
    std::sort(s.begin(), s.end());
    for (auto a : s) {
        std::cout << a << " ";
    }   
    std::cout << '\n';
 
    // 用标准库比较函数对象排序
    std::sort(s.begin(), s.end(), std::greater());
    for (auto a : s) {
        std::cout << a << " ";
    }   
    std::cout << '\n';
 
    // 用自定义函数对象排序
    struct {
        bool operator()(int a, int b) const
        {   
            return a < b;
        }   
    } customLess;
    std::sort(s.begin(), s.end(), customLess);
    for (auto a : s) {
        std::cout << a << " ";
    }   
    std::cout << '\n';
 
    // 用 lambda 表达式排序
    std::sort(s.begin(), s.end(), [](int a, int b) {
        return b < a;   
    });
    for (auto a : s) {
        std::cout << a << " ";
    } 
    std::cout << '\n';
}

参考:

[C++]std::sort()函数使用总结_李正浩大魔王的博客-CSDN博客

你可能感兴趣的:(c++,算法,开发语言)