一、关于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. Go 方法、接口

        在 Go 中,类型可以定义接收此类型的函数,即方法.每个类型都有接口,意味着对那个类型定义了方法集合. 下面定义了结构体类型 S 以及它的两个方法: type S struct { i int ...

  2. CentOS 搭建dns服务器 解析任意域名

    DNS服务器IP地址:192.168.1.219 服务器版本:centos6.6一:软件安装 [root@localhost ~]# yum -y install bind* 二:修改主配置文件 [r ...

  3. 文本表征:SoW、BoW、TF-IDF、Hash Trick、doc2vec、DBoW、DM

    原文地址:https://www.jianshu.com/p/2f2d5d5e03f8 一.文本特征 (一)基本文本特征提取 词语数量 常,负面情绪评论含有的词语数量比正面情绪评论更多. 字符数量 常 ...

  4. ICPC Asia Nanning 2017 L. Twice Equation (规律 高精度运算)

    题目链接:Twice Equation 比赛链接:ICPC Asia Nanning 2017 Description For given \(L\), find the smallest \(n\) ...

  5. BigDecimal.divide方法

    java.math.BigDecimal.divide(BigDecimal divisor, int roundingMode) 返回一个BigDecimal,其值为(this/除数),其标度是th ...

  6. 第一周任务Largest Submatrix of All 1’s

    Largest Submatrix of All 1’s Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 9512   Ac ...

  7. Oracle数据库与MySQL的不同点

    Oracle笔记 一.   Oracle的启动和登录:  1.启动:通过启动Oracle的服务启动. OracleServiceORCL:核心服务,必须启动. OracleOraDb11g_home1 ...

  8. projects

    layout title project 开源项目 本文记录我收藏的开源项目

  9. 12_通过 CR3 切换_读取指定进程数据

    注意: cr3 切换 ,导致eip 指向的页面,改变为对应cr3 的页面:所以代码也变了:这里需要将这部分代码放入公共区域. 解决: 使用 类似前面 山寨 systemfastcallentry 的方 ...

  10. 关于while循环中的break和continue的区别

    while循环如果不加条件限制的话,它会一直循环下去,那么问题就来了,如果我不用条件去终止while循环的话,那么我该用什么方法去终止呢? 你可以选择两种终止while循环的方法 1.break  强 ...