• 泛型算法(十四)之排序算法


    1、partial_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last):使得[first, middle)为整个序列中最小的那些元素并为升序。[middle, last)的元素任意安排。

        std::vector<int> c = {6, 2, 9, 0, 5, 1, 3, 8, 4, 7};
        //使得整个序列中最小的5个元素升序,其它元素任意安排
        std::partial_sort(c.begin(), c.begin() + 5, c.end());
        //输出c
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,9,6,8,5,7,

    2、part_sort(RandomAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last, Compare comp):重载版本

     自己实现comp,向算法定制操作。

    3、partial_sort_copy(InputIterator first, InputIterator last, RandomAccessIterator result_first, RandomAccessIterator result_last):从输入序列复制最小的一批元素到结果序列中,并按升序排列。

        std::vector<int> c1 = {7, 2, 9, 0, 5, 1, 3, 6, 4, 8};
        std::vector<int> c2;
        c2.resize(7);
        //从c1中复制最小的7个元素到序列c2中,并按升序排列
        std::partial_sort_copy(c1.begin(), c1.end(), c2.begin(), c2.end());
        //输出c
        for (auto var : c2)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,5,6,

    4、partial_sort_copy(InputIterator first, InputIterator last, RandomAccessIterator result_first, RandomAccessIterator result_last, Compare comp):重载版本

    自己实现comp,向算法定制操作。

    5、is_sorted(ForwardIterator first, ForwardIterator last):C11版本,判断序列是否为升序。

        std::vector<int> c = {7, 2, 9, 0, 5, 1, 3, 6, 4, 8};
        //判断序列c是否为升序
        bool is_sorted = std::is_sorted(c.begin(), c.end());
        //输出
        std::cout << (int)is_sorted;
        //打印结果:0

    6、is_sorted(ForwardIterator first, ForwardIterator last, Compare comp):C11版本,重载版本。

    自己实现comp,向算法定制操作。

    7、is_sorted_until(ForwardIterator first, ForwardIterator last):C11版本,返回序列从头部开始为升序的子序列的结束处

        std::vector<int> c = {1, 2, 3, 4, 6, 5, 7, 9, 0, 8};
        //返回序列从头部开始为升序的子序列的结束处
        auto iter = std::is_sorted_until(c.begin(), c.end());
        //输出iter指向的元素
        std::cout << *iter;
        //打印结果:5

    8、is_sorted_until(ForwardIterator first, ForwardIterator last, Compare comp):C11版本,重载版本。

    自己实现comp,向算法定制操作。

    9、sort(RandomAccessIterator first, RandomAccessIterator last):排序。

        std::vector<int> c = {1, 2, 3, 4, 6, 5, 7, 9, 0, 8};
        //排序c
        std::sort(c.begin(), c.end());
        //输出c
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,5,6,7,8,9,

    10、sort(RandomSccessIterator first, RandomAccessIterator last):重载版本。

    自己实现comp,向算法定制操作。

    11、stable_sort(RandomAccessIterator first, RandomAccessIterator last):稳定排序。

    通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。

    12、stable_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp):重载版本。

    自己实现comp,向算法定制操作。

  • 相关阅读:
    Java 异常处理
    Java Scanner 类
    Java 流(Stream)、文件(File)和IO
    Java 方法
    'javac' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    Java 正则表达式
    nginx配置ssl证书
    Windows 查看端口、根据pid查找引用程序
    scp复制文件到另外一台服务器
    CentOS安装jdk SE 1.8 JDK与OpenJDK的区别
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5144110.html
Copyright © 2020-2023  润新知