zoukankan      html  css  js  c++  java
  • sort()和优先队列的总结

    一、关于sort函数

    sort()排序函数默认是从小到大,
    1. a={53216 };
    2. sort(a,a+n);
    3. //输出是1 2 3 5 6
    ​这里如果要从到小排序,则有两种方式可以满足
    (1)写一个cmp()函数,定义大小关系
    1. bool cmp(int a,int b)
    2. {
    3.     return a>b;
    4. }
    5. a={5,3,2,1,6}
    6. sort(a,a+5,cmp)
    (2)直接使用
    1. a={5,3,2,1,6}
    2. sort(a,a+5,greater<int>()) //注意后面的()不能少

    以上都是sort()函数针对简单数据类型的。对结构体的排序如下:
    (1)写一个cmp函数,定义结构体的大小关系
    1. struct Point{
    2. int x,y;
    3. }p[maxn];

    4. bool cmp(Point a,Point b)
    5. {
    6. return a.x<b.x;//按照x从小到大排序
    7. }
    (2)在结构体里面重载运算符<
    1. struct Point{
    2. int x,y;
    3. bool operator< (const Point& a) const
    4. {
    5. return x>a.x;//x从大到小排序
    6. }
    7. }p[maxn];
    8. sort(p,p+n);
    如果要想结构体也能使用greater<Point>()和less<Point>()
    则:
    要使用greater<Point>() 需要重载">"
    要使用less<Point>()    需要重载"<"


    二、关于优先队列
    优先队列的默认排序是从大到小。
    1. int num[10]={14,10,56,7,83,22,36,91,3,47};
    2. priority_queue<int> q;
    自定义排序方法:
    (1)使用系统的比较函数
    1. int num[10]={14,10,56,7,83,22,36,91,3,47};
    2. priority_queue<int,vector<int>,greater<int> > que;/////采取最小优先策略,即按从小到大的顺序排列
    3. priority_queue<int,vector<int>,less<int> > que1; ////采取最大优先策略,即按从大到小的顺序排列

    (2)重载<操作符定义优先级
    1. struct student
    2. {
    3. string name;
    4. float score;
    5. /////重载<运算符来实现改变优先规则
    6. bool operator < (const student &s) const
    7. {
    8. //////按score由小到大排列
    9. return score>s.score
    10. //////按score由大到小排列;
    11. //return score<s.score;
    12. }
    13. };

    (3)通过






























  • 相关阅读:
    springcloud之consul
    git学习创建项目仓库
    学习vue之路V1.0.0
    使用jquery+ajax+php实现搜索框的功能
    发现一个vue的UI组件库
    一个菜鸟用webpack-vue.js编译过程碰到的坑~~!!
    学习vue之路
    typescript入门
    计算机排序算法
    js中三种变量的声明方式const ; var ; let
  • 原文地址:https://www.cnblogs.com/gt123/p/3853737.html
Copyright © 2011-2022 走看看