一、关于sort函数

sort()排序函数默认是从小到大,
  1. a={5,3,2,1,6 };
  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)通过


























sort()和优先队列的总结的更多相关文章

  1. 给小班讲stl 之 map、sort、优先队列

    引子:最近老师让给小班讲课,讲stl,,但是我觉得就小班现在这水平根本讲不懂好不好,,,,

  2. hdoj 3785 寻找大富翁【优先队列+sort排序】

    寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. HDU 5884 Sort(二分+优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=5884 题意:有个屌丝设计了一个程序,每次可以将k个数组进行合并,代价为这k个数组总的长度之和.现在另外一个屌丝要 ...

  4. ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. c++使用优先队列时自定义优先出队顺序(和sort)

    优先队列也是一种先进先出的数据结构,元素从队尾入队,从队头出队,但是优先队列相较一般队列多了一个判断优先级的功能,在当前队列中,优先级最高的元素将被第一个删除. 先看一下优先队列的定义 templat ...

  6. Sort HDU - 5884(优先队列+二分)

    Sort Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. 数据结构:优先队列 基于list实现(python版)

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: Minion-Xu #list实现优先队列 class ListPriQueueValueE ...

  8. [LeetCode] Sort Characters By Frequency 根据字符出现频率排序

    Given a string, sort it in decreasing order based on the frequency of characters. Example 1: Input: ...

  9. python优先队列,队列和栈

    打印列表的疑问 class Node: def __str__(self): return "haha" print([Node(),Node()]) print(Node()) ...

随机推荐

  1. 常用的HTTP请求头与响应头

    HTTP消息头是指,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件.HTTP消息头用来准确描述正在获取的资源.服务器或 ...

  2. 常用的一些js事件及案例

    比如金额需要显示的时候转换成有千分位,小数点后保留2位等.去编辑的时候,又要格式化,把逗号都去掉.网上找了段代码,但是再次编辑会有问题,修改了一下,代码如下: function outputMoney ...

  3. k小子串 SPOJ - SUBLEX 2

    题意: 求字典序第K大的子串 题解: 先求出后缀自动机对应节点 // 该节点后面所形成的自字符串的总数 然后直接模拟即可 #include <set> #include <map&g ...

  4. css 画饼图 倒计时圆圈

    html <div class="pie"></div> css .pie{ width: 200px; height: 200px; border-rad ...

  5. 13. this关键字

    1.this的概述 this关键字代表是对象的引用.也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用. 2.this实例,初始化成员变 class Employee { privat ...

  6. cmd操作SQLService数据库

    1.win+R 输入cmd2.输入sqlcmd -s 服务器名称3. 1> 输入 use 数据库名称4. 2> go5. 1> select *from 表名6. 2> go

  7. TStringGrid 实现下拉框

    TStringGrid 实现下拉框比较常见的思路是在TSringGrid中嵌入一个TComboBox ,思路虽然简单,但开发起来却很麻烦,而且有时会出现不愿看到的效果.还有一种更巧的方法,是Delph ...

  8. 最近工作中用到的Linux指定 PS Kill netstat解释

    1.ps详解点击如下链接 https://jingyan.baidu.com/article/fec4bce2479f05f2618d8b80.html 2.kill kill命令用来删除执行中的程序 ...

  9. centos 服务器编译安装apache+php

    1.检查服务器中是否自带httpd,如果/etc/httpd/httpd.conf,说明系统自带httpd服务,需要卸载或关闭服务,不要让他影响到本次安装的服务启动 可以用 service httpd ...

  10. 使用GDI+绘制的360风格按钮控件

    将下面的代码拷贝到一个单元中,创建一个包,加入这个单元后安装.使用的时候设置好背景颜色,边框颜色,图标(png格式)相对路径的文件名称.这个控件可以利用PNG图像的颜色透明特性,背景色默认透明度为50 ...