c++/java/python priority_que实现最大堆和最小堆

时间:2023-02-09 12:33:53

#include<iostream>
#include<vector>
#include<math.h>
#include<string>
#include<algorithm>
using namespace std;
#include<map>
#include<stack>
#include<unordered_set>
#include<string.h>
#include<queue>
struct cmp
{
bool operator()(int a, int b)
{
return a > b;
}
};
priority_queue<int> maxHeap;
priority_queue<int,vector<int>,cmp> minHeap;
int main()

{
maxHeap.push(2);
maxHeap.push(3);
maxHeap.push(1);
int len = maxHeap.size();
for (int i = 0; i < len; i++)
{

cout << maxHeap.top() << endl;
maxHeap.pop();
}
minHeap.push(3);
minHeap.push(2);
minHeap.push(101);
int len2 = minHeap.size();
for (int i = 0; i < len2; i++)
{
cout << minHeap.top() << endl;
minHeap.pop();
}
return 0;
}

java中priorityqueue是最小堆,而c++是最大堆

PriorityQueue<Integer> minHeap=new PriorityQueue<>(11);
PriorityQueue<Integer> maxHeap=new PriorityQueue<>(11, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return (o2-o1);
}
});

//python中默认的heapq中是最小堆,和java类似,最大堆的实现trick是入堆时候-num,出堆的时候再加上-num就可以了

具体:import heapq

minHeap=[]

heappush(minHeap,11)

heappush(minHeap,12);

heappop(minHeap)//出堆

minHeap[0] 堆顶的最大元素

c++/java/python priority_que实现最大堆和最小堆的更多相关文章

  1. C&plus;&plus; multiset通过greater、less指定排序方式,实现最大堆、最小堆功能

    STL中的set和multiset基于红黑树实现,默认排序为从小到大. 定义三个multiset实例,进行测试: multiset<int, greater<int>> gre ...

  2. Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java

    Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...

  3. PAT-1147(Heaps)最大堆和最小堆的判断&plus;构建树

    Heaps PAT-1147 #include<iostream> #include<cstring> #include<string> #include<a ...

  4. -Xmx 和 –Xms 设置最大堆和最小堆

    C:\Java\jre1.6.0\bin\javaw.exe 按照上面所说的,最后参数在eclipse.ini中可以写成这个样子: -vmargs     -Xms128M     -Xmx512M ...

  5. STL 最大堆与最小堆

    在第一场CCCC选拔赛上,有一关于系统调度的水题.利用优先队列很容易AC. // 由于比赛时花费了不少时间研究如何定义priority_queue的比较函数,决心把STL熟练掌握... Queue 首 ...

  6. java最大最小堆

    堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值. 最大堆和最小堆是二叉堆的两种形式. 最大堆:根结点的键值是所有堆结点键值中最大者. 最小堆:根结 ...

  7. (八)map,filter,flatMap算子-Java&amp&semi;Python版Spark

    map,filter,flatMap算子 视频教程: 1.优酷 2.YouTube 1.map map是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的J ...

  8. 芒果TV招聘研发工程师&lpar;JAVA PYTHON&rpar;&comma;地点长沙

    长沙芒果TV招聘高级 JAVA Python 工程师,工作地点:湖南广电   有兴趣的邮件0xmalloc@gmail.com; zealotyin@qq.com 公司有一大批从北京上海一线互联网企业 ...

  9. paip&period;提高效率---集合的存取括号方式 uapi java python php js 的实现比较

    paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较 ##java ----------- 在JDK1.7中,摒弃了Java集合接口的实现类,如:Ar ...

随机推荐

  1. mysql常用脚本

    1.执行拼接字符串sql语句(可传参数) set @dbname='trickraft_14f.'; set @sql=CONCAT('SELECT * FROM ',@dbname,'Armforc ...

  2. 开发iOS应用程序需要的工具和编程技术

    似乎每个iOS应用开发学习者都是从这篇文章开始写博客的,我也不例外,也从这里写吧,内容雷同,但绝对是原创.因为一直相信,通过自己的理解写出来,是掌握技术一个很好的途径. Xcode苹果最为优秀的集成开 ...

  3. idl 批量裁剪代码

    PRO Subset_via_shp_update COMPILE_OPT idl2 ENVI,/restore_base_save_files envi_batch_init,LOG_FILE='b ...

  4. 利用if&comma;else判断输入的是不是一个正整数

    static void Main(string[] args)        {            while (true)                      { Console.Writ ...

  5. angulajs 如何在controller 之间共享数据

    当在一个controller中 通过设置$scope的数据,来影响其它control的范围时,可以使用$rootScope 举个例子: 在一个control A范围内设置 mainApp.contro ...

  6. java--join方法

    package MyTest; class TestDemo implements Runnable { public void run() { int i = 0; for (int j = 0; ...

  7. LOJ &num;6303&period; 水题 &lpar;约数 质因数&rpar;

    #6303. 水题 内存限制 10 MiB 时间限制:1000 ms 标准输入输出 题目描述 给定正整数 n,kn, kn,k,已知非负整数 xxx 满足 n!modkx=0,求 xmaxx_{max ...

  8. asp&period;net ajax控件选项卡控件的选项卡的动态显示与隐藏问题

    if (dq_gly.Yhm != "admin") { this.TabContainer1.Tabs[0].Visible = false; this.TabContainer ...

  9. keil的51项目创建

    keil的51项目创建步骤: 工程创建: Project->New uVision Project 项目命名:如...test CPU->Atmel::AT89C51 文件创建: File ...

  10. opencv 3&period;2图像矩&lpar;Image Moments&rpar;

    图像矩乍看比较难理解,看了很多资料,大概明白了一些,但还是无法在脑海里形成一个模型概念,于是从源码中寻找它的应用. 今天就通过公式和程序抓取数据,来进一步理解图像矩 先看一个图片 这是程序运行结果, ...