• C++ STL 常用排序算法


    C++ STL 常用排序算法

    merge()

    以下是排序和通用算法:提供元素排序策略
    merge: 合并两个有序序列,存放到另一个序列。

    例如:

    vecIntA,vecIntB,vecIntC是用vector<int>声明的容器,
    vecIntA已包含1,3,5,7,9元素,
    vecIntB已包含2,4,6,8元素
    vecIntC.resize(9); //扩大容量
    merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(),vecIntC.begin());
    此时vecIntC就存放了按顺序的1,2,3,4,5,6,7,8,9九个元素

    sort()

    sort: 以默认升序的方式重新排列指定范围内的元素。若要改排序规则,可以输入比较函数。

    //学生类
    Class CStudent:
    {
    public:
           CStudent(int iID, string strName)
           {
                  m_iID=iID;
                  m_strName=strName;
           }
    public:
           int m_iID;
           string m_strName;
    }

    //学号比较函数
    bool Compare(const CStudent &stuA,const CStudent &stuB)
    {
           return (stuA.m_iID<strB.m_iID);
    }

    void main()
    {
           vector<CStudent> vecStu;
           vecStu.push_back(CStudent(2,"老二"));
           vecStu.push_back(CStudent(1,"老大"));
           vecStu.push_back(CStudent(3,"老三"));
           vecStu.push_back(CStudent(4,"老四"));
           sort(vecStu.begin(),vecStu.end(),Compare); // 此时,vecStu容器包含了按顺序的"老大对象","老二对象","老三对象","老四对象"
    }

    random_shuffle()

    random_shuffle: 对指定范围内的元素随机调整次序。
    srand(time(0)); //设置随机种子

    vector<int> vecInt;
    vecInt.push_back(1);
    vecInt.push_back(3);
    vecInt.push_back(5);
    vecInt.push_back(7);
    vecInt.push_back(9);

    string str("itcastitcast ");
    random_shuffle(vecInt.begin(), vecInt.end()); //随机排序,结果比如:9,7,1,5,3
    random_shuffle(str.begin(), str.end()); //随机排序,结果比如:" itstcasticat "

    reverse()  逆序

    vector<int> vecInt;
    vecInt.push_back(1);
    vecInt.push_back(3);
    vecInt.push_back(5);
    vecInt.push_back(7);
    vecInt.push_back(9);
    reverse(vecInt.begin(), vecInt.end()); //{9,7,5,3,1}

  • 相关阅读:
    Django组件-cookie与session
    Js获取标签高度
    js动态添加事件
    div 显示与隐藏
    JS字符串截取
    网页事件
    js_event.keycode值大全
    DOS删除服务
    判断字符串的编码
    《把时间当作朋友》读书笔记(二)-- 困境
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7793394.html
Copyright © 2020-2023  润新知