堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。

(1)根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆。

(1)根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆。

用堆的关键部分是两个操作:

(1)put操作:即往堆中加入一个元素;

(2)get操作:即从堆中取出并删除一个元素。【把根节点弹出】

(1)

void put(int d)
{heap[++heap_size]=d;//大根堆push_heap(heap+1,heap+heap_size+1);heap1[++heap1_size]=d;//小根堆push_heap(heap1+1,heap1+heap1_size+1,greater<int>());
}

(2)

int get()
{pop_heap(heap+1,heap+heap_size+1,greater<int>());return heap[heap_size--];
}

代码如下(输出根节点,即最大点和最小点)

#include<cstdio>
#include<functional>
#include<algorithm>
#include<iostream>
using namespace std;int heap[101],heap_size;
int heap1[101],heap1_size;
void put(int d)
{heap[++heap_size]=d;//大根堆push_heap(heap+1,heap+heap_size+1);heap1[++heap1_size]=d;//小根堆push_heap(heap1+1,heap1+heap1_size+1,greater<int>());
}int main()
{int n,l,i;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&l);put(l);}printf("dagendui:%d\n",heap[1]);printf("xiaogendui:%d",heap1[1]);
}

【堆】 大根堆和小根堆的建立相关推荐

  1. c语言建立小根堆的算法,小根堆(Heap)的详细实现

    堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 ...

  2. C++ STL 中大根堆,小根堆的应用。

    1>优先队列:在C++中优先队列默认的是大根堆,如果用小根堆则加入greater. priority_queue<int, vector<int>, less<int&g ...

  3. 堆——神奇的优先队列 大根堆小根堆详解,附小根堆C++代码实现与STL相关

    文章目录 前置知识 堆操作 小根堆插入 代码实现 小根堆删除 代码实现 测试代码 STL实现--priority_queue 1.使用 2.创建 3.成员函数 前置知识 堆是一个完全二叉树(最后一层可 ...

  4. day36: 数据流中的中位数(大根堆小根堆)

    问题描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...

  5. java大根堆和小根堆

    java使用优先队列实现大顶堆和小顶堆,默认是小根堆,当然记不住默认也没有关系 小根堆创建 PriorityQueue<Integer> minHeap = new PriorityQue ...

  6. 算法笔记-堆相关、堆的定义、大小根堆、算法程序实现、堆的算法题、C#写法

    内容概述 1,堆结构就是用数组实现的完全二叉树结构 2,完全二叉树中如果每棵子树的最大值都在顶部就是大根堆 3,完全二叉树中如果每棵子树的最小值都在顶部就是小根堆 4,堆结构的heaplnsert与h ...

  7. 2021-03-05小根堆

    堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 ...

  8. c语言 topk算法,scala写算法-用小根堆解决topK

    topK问题是指从大量数据中获取最大(或最小)的k个数,比如从全校学生中寻找成绩最高的500名学生等等. 本问题可采用小根堆解决.思路是先把源数据中的前k个数放入堆中,然后构建堆,使其保持堆序(可以简 ...

  9. 算法自学__小根堆(Heap)

    参考资料: https://www.cnblogs.com/WindSun/p/11444446.html https://www.cnblogs.com/huashanqingzhu/p/11040 ...

  10. 堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)

    堆的特性: 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时,称为"最大堆",也称大根堆: 在完全二叉树中,任何一个子树的最大值都在这个子树的根 ...

最新文章

  1. matlab按顺序排列图片,小技巧
  2. ITK:创建样本测量列表
  3. java 最小堆_Java最小堆实现
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
  5. rk3399_android7.1 USB Type-A的配置
  6. 图文配置Silverlight3.0开发环境(转载)
  7. Python : async和await、asyncio与aiofiles
  8. java map是有序的吗_java中map、set、list是否有序
  9. 微信公众号服务号申请注册教程
  10. SIMPLE ONLINE AND REALTIME TRACKING
  11. 【copy_paste数据增强】
  12. matlab coder 转 c语言,MATLAB Coder从MATLAB生成C/C++代码步骤
  13. 网易im 会话列表不显示的问题
  14. API 网关和微服务介绍
  15. 最近公共祖先 (Lowest common ancestor)
  16. 网页基础(九)选择器
  17. C语言入门题库——编写求圆面积和球体积的函数
  18. 2014多校联合-第八场
  19. 人生无常,该来的总会来
  20. 一文读懂“生成式 AI”

热门文章

  1. ORB-SLAM2-学习笔记
  2. java数据回填_快逸数据回填的实现方法
  3. NoSQL数据库之Redis(三):常用五大数据类型
  4. 深圳 IT 男打人后疯狂凡尔赛,还教育民警,这回把 IT 人的脸都丢尽了……
  5. 天干地支计算公式_任何一天干支的计算方法 天干地支对照表
  6. 服务器系统如何管理网络连接不上,详解Windows Server 2008网络设置技巧技术教程...
  7. 〖ChatGPT实践指南 - 零基础扫盲篇⑧〗- OpenAI 的 模型(Model) 介绍
  8. Linux命令——性能监控glance命令详解
  9. 什么是信噪比?信噪比越大好还是越小好?
  10. 2016中国软件行业发展趋势及网络化发展分析【图】