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


    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,向算法定制操作。

  • 相关阅读:
    URL和URI之间的区别
    nom Uncaught Error: Cannot find module 'babel-runtime/regenerator'
    PHP中使用curl获取头信息headers的一些笔记
    Typora中自定义命令上传图片
    iOS链接big sur弹出“文件找不到”
    云开发cannot find module wx-server-sdk
    关于Laravel框架中Guard的底层实现
    PHP8中字符串与数字的比较更智能
    git refusing to merge unrelated histories
    k8s入门-资源文件实现
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5144110.html
Copyright © 2020-2023  润新知