一、关于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. JAVA调用R脚本 windwos路径下

    RConnection c = new RConnection();// REXP x = c.eval("source('D:\\\\jiaoben\\\\RJava_test.R',en ...

  2. HTML-参考手册: HTTP 状态消息

    ylbtech-HTML-参考手册: HTTP 状态消息 1.返回顶部 1. HTTP 状态消息 当浏览器从 web 服务器请求服务时,可能会发生错误. 以下列举了有可能会返回的一系列 HTTP 状态 ...

  3. C++——代码风格

    google代码风格 1.使用安全的分配器(allocator),如scoped_ptr,scoped_array 2.测试用的,其他的不能用: 2.1 友元 2.2 C++异常 2.3 RTTI 3 ...

  4. redis 配置文件aof配置

    redis 配置文件aof配置: bind 127.0.0.1 port 6379 daemonize yes dbfilename dump.rdb dir /new_renpeng/redis/ ...

  5. 常用内置模块(三)——shelve、xml、hashlib、configparser

    常用模块(三) 一.shelve模块 1.shelve模块也是一种序列化模块,内部使用的是pickle模块,所以也存在跨平台性差的问题 2.特点: 只要提供一个文件名即可 读写的方式和字典一样 将数据 ...

  6. 去除字符串中的HTML标签

    背景:Kindeditor内容保存在数据库中的类型是text,包含文字和HTML标签. 需求:显示内容的前50个字(纯文字内容) 方法:将字段查出去除标签,截取前50 import java.util ...

  7. python接口自动化(响应对象方法)

    python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding ...

  8. mongodb入门篇

    MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...

  9. dev中 ,usercontrol打印界面内容,打印预览和打印

    首先,在对应的文件夹下面添加引用,如下图 如果没有就下载下来包. 预先在本地文件夹下面建立.frx文件,像这样的, 然后在触发事件下面写 //打印预览 private void btn_Preview ...

  10. 笔记36 Spring Web Flow——配置

    Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序.Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程 序.它将流程的定义与实现流程行 ...