【堆】 大根堆和小根堆的建立
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。
(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]);
}
【堆】 大根堆和小根堆的建立相关推荐
- c语言建立小根堆的算法,小根堆(Heap)的详细实现
堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 ...
- C++ STL 中大根堆,小根堆的应用。
1>优先队列:在C++中优先队列默认的是大根堆,如果用小根堆则加入greater. priority_queue<int, vector<int>, less<int&g ...
- 堆——神奇的优先队列 大根堆小根堆详解,附小根堆C++代码实现与STL相关
文章目录 前置知识 堆操作 小根堆插入 代码实现 小根堆删除 代码实现 测试代码 STL实现--priority_queue 1.使用 2.创建 3.成员函数 前置知识 堆是一个完全二叉树(最后一层可 ...
- day36: 数据流中的中位数(大根堆小根堆)
问题描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...
- java大根堆和小根堆
java使用优先队列实现大顶堆和小顶堆,默认是小根堆,当然记不住默认也没有关系 小根堆创建 PriorityQueue<Integer> minHeap = new PriorityQue ...
- 算法笔记-堆相关、堆的定义、大小根堆、算法程序实现、堆的算法题、C#写法
内容概述 1,堆结构就是用数组实现的完全二叉树结构 2,完全二叉树中如果每棵子树的最大值都在顶部就是大根堆 3,完全二叉树中如果每棵子树的最小值都在顶部就是小根堆 4,堆结构的heaplnsert与h ...
- 2021-03-05小根堆
堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 ...
- c语言 topk算法,scala写算法-用小根堆解决topK
topK问题是指从大量数据中获取最大(或最小)的k个数,比如从全校学生中寻找成绩最高的500名学生等等. 本问题可采用小根堆解决.思路是先把源数据中的前k个数放入堆中,然后构建堆,使其保持堆序(可以简 ...
- 算法自学__小根堆(Heap)
参考资料: https://www.cnblogs.com/WindSun/p/11444446.html https://www.cnblogs.com/huashanqingzhu/p/11040 ...
- 堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)
堆的特性: 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时,称为"最大堆",也称大根堆: 在完全二叉树中,任何一个子树的最大值都在这个子树的根 ...
最新文章
- matlab按顺序排列图片,小技巧
- ITK:创建样本测量列表
- java 最小堆_Java最小堆实现
- 基于JAVA+SpringMVC+Mybatis+MYSQL的校园多媒体大赛设计平台
- rk3399_android7.1 USB Type-A的配置
- 图文配置Silverlight3.0开发环境(转载)
- Python : async和await、asyncio与aiofiles
- java map是有序的吗_java中map、set、list是否有序
- 微信公众号服务号申请注册教程
- SIMPLE ONLINE AND REALTIME TRACKING
- 【copy_paste数据增强】
- matlab coder 转 c语言,MATLAB Coder从MATLAB生成C/C++代码步骤
- 网易im 会话列表不显示的问题
- API 网关和微服务介绍
- 最近公共祖先 (Lowest common ancestor)
- 网页基础(九)选择器
- C语言入门题库——编写求圆面积和球体积的函数
- 2014多校联合-第八场
- 人生无常,该来的总会来
- 一文读懂“生成式 AI”
热门文章
- ORB-SLAM2-学习笔记
- java数据回填_快逸数据回填的实现方法
- NoSQL数据库之Redis(三):常用五大数据类型
- 深圳 IT 男打人后疯狂凡尔赛,还教育民警,这回把 IT 人的脸都丢尽了……
- 天干地支计算公式_任何一天干支的计算方法 天干地支对照表
- 服务器系统如何管理网络连接不上,详解Windows Server 2008网络设置技巧技术教程...
- 〖ChatGPT实践指南 - 零基础扫盲篇⑧〗- OpenAI 的 模型(Model) 介绍
- Linux命令——性能监控glance命令详解
- 什么是信噪比?信噪比越大好还是越小好?
- 2016中国软件行业发展趋势及网络化发展分析【图】