堆模板
发布日期:2021-10-02 10:57:33
浏览次数:24
分类:技术文章
本文共 862 字,大约阅读时间需要 2 分钟。
堆是一种简单高效的数据结构,在很多常用算法的优化上大显身手。
堆的常数很小,同样的数据,用堆来排序和快排的速度几乎相等,但是平衡树的速度会慢很多,Splay慢了两倍多。。
简单的学习一下堆,把模板发出来与大家分享
CODE(小根堆,排序):
#include#include #include #include #define MAX 200010#define INF 0x7f7f7f7fusing namespace std;struct SmallHeap{ int num[MAX]; int last; int Top() { return num[1]; } void Insert(int x) { num[++last] = x; int now = last; while(num[now] < num[now >> 1] && now > 1) swap(num[now],num[now >> 1]),now >>= 1; } void Pop() { num[1] = num[last--]; int now = 2; while(now <= last) { if(num[now] > num[now + 1]) ++now; if(num[now] < num[now >> 1]) swap(num[now],num[now >> 1]),now <<= 1; else break; } }}heap;int cnt;int main(){ cin >> cnt; for(int x,i = 1;i <= cnt; ++i) { scanf("%d",&x); heap.Insert(x); } for(int i = 1;i <= cnt; ++i) { printf("%d\n",heap.Top()); heap.Pop(); } return 0;}
转载地址:https://blog.csdn.net/jiangyuze831/article/details/39051111 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月13日 06时25分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【u3d泰斗破坏神】07 --- 角色攻击动画拆分、状态机设计
2019-04-26
【u3d泰斗破坏神】08 --- UGUI 制作艺术字体
2019-04-26
【u3d泰斗破坏神】09 --- 角色血条的制作、掉血特效
2019-04-26
Unity Shader 入门精要(01) -- 渲染流水线
2019-04-26
Unity Shader 入门精要(02) -- shader的编码基础
2019-04-26
Unity Shader 入门精要(03) -- Unity的基础光照
2019-04-26
Unity Shader 入门精要(04) -- 基础纹理
2019-04-26
Unity3D 移动平台的资源路径问题
2019-04-26
二分查找(折半查找)
2019-04-26
线段树
2019-04-26
编程机制
2019-04-26
自己写的Java版计算器
2019-04-26
字、位、字节摘抄的,怕忘了
2019-04-26
printf与scanf的用法知识(C Primer Plus总结)
2019-04-26
三目运算符(条件运算符)
2019-04-26
C语言中的goto语句
2019-04-26
欧几里德算法及拓展
2019-04-26
CSDN-markdown编辑器基本用法
2019-04-26
等差数列公式搜集
2019-04-26
复合字面量(compound literal)
2019-04-26