百练 实现堆结构
来源:互联网 发布:网络诈骗报警流程 编辑:程序博客网 时间:2024/06/02 06:47
//百练 实现堆结构 #include <iostream>#include <cstdio>#include <cstring>long heap[100010];long sz = 0;void insert(long x){//插入一个新元素,先将其放置最后端,逐步向上提升 long i = sz++;while(i>0){//p为父节点 long p = (i-1)/2;//如果父节点值大于x,则将新插入结点上提 if(heap[p]>x){heap[i]=heap[p];i = p;}else break;}heap[i]=x;}long pop(){long ans = heap[0];printf("%ld\n",ans);//将末尾结点的值提上来 long x=heap[--sz];//从根节点开始比对 long i = 0;while(2*i+1<sz){long left = 2*i+1;long right = 2*i+2;if(right<sz&&heap[right]<heap[left]){//注意left的变化 left = right;}if(heap[left]>=x) break;heap[i] = heap[left];i = left;}heap[i] = x;}using namespace std;int main(){long t;cin>>t;while(t--){sz = 0;memset(heap,0,sizeof(heap));long n;cin>>n;while(n--){int type;long num;scanf("%d",&type);if(type==1) {scanf("%ld",&num);insert(num);} else{pop();}}}}
阅读全文
0 0
- 百练 实现堆结构
- 堆结构的实现
- 1:实现堆结构
- 链式结构实现堆
- 实现堆结构
- 实现堆结构
- 实现堆结构
- 4078:实现堆结构
- C++ 堆结构(数组实现)
- 自己实现的堆结构
- C++ 堆结构(数组实现)
- 链式结构实现堆排序
- C++ 堆结构(数组实现)
- 百练+priority_queue应用+最大堆最小堆找出中位数
- 百练 2775:文件结构“图”
- 算法-----堆结构实现优先级队列
- 基于堆结构的TopN问题实现
- java使用堆结构实现优先队列
- NYOJ:69-数的长度
- NYOJ:70-阶乘因式分解(二)
- Leetcode413. Arithmetic Slices
- 使用caffe fine-tune一个单标签图像分类模型
- JavaScript本地对象之系列:Array对象
- 百练 实现堆结构
- 居然现在才安装eclipse,还来得及?
- 阅读笔记 > 软件开发中怎样解决问题?
- stm32调试-- 获取内存数据
- 阅读笔记 > 受欢迎程序的设计特点
- C#练习——字符串字符个数,简单数学题
- leetcode 462. Minimum Moves to Equal Array Elements II
- JQUERY实现TAB切换
- 聚集索引和非聚集索引(整理)