什么是堆(Heap)
优先队列(Priority Queue):特殊的”队列”,取出元素的顺序优先权的大小,而不是元素在队列的先后顺序;

1.使用完成二叉树;
2.数组表述;

堆中的路径(25 分)
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。

输入格式:

每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。

输出格式:

对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。

输入样例:
5 3
46 23 26 24 10
5 4 3
输出样例:

24 23 10
46 23 10
26 10

#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000
#define MINH -10001
int H[MAXN],size;
void Create(){size = 0;H[0] = MINH;
}void Insert(int X)
{int i;for(i=++size;H[i/2]>X;i/=2){H[i]=H[i/2];}H[i] = X;}int main()
{int M,N;scanf("%d%d",&M,&N);Create();int input;for(int i=1;i<=M;i++){scanf("%d",&input);Insert(input);}for(int i=0;i<N;i++){scanf("%d",&input);printf("%d",H[input]);while(input>1){input/=2;printf(" %d",H[input]);}printf("\n");}return 0;
}

优先队列 -- 大顶堆,小订堆相关推荐

  1. 大顶堆小顶堆优先队列

    特性和应用场景 大顶堆小顶堆,也叫优先队列,是一种基于数组+平衡二叉树的数据结构. 主要用于排序,增减操作的速度较快(O(logn)) 适合带有优先级的排序场景,比如处理订单的时候,VIP用户的优先级 ...

  2. priority_queue实现大顶堆和小顶堆

    升序队列,小顶堆 priority_queue <int,vector<int>,greater<int> > q; 降序队列,大顶堆 priority_queue ...

  3. 优先队列默认是小顶堆吗_堆和堆傻傻分不清?进来!包教会!

    什么是堆? 堆其实就是一种特殊的队列--优先队列. 普通的队列游戏规则很简单:就是先进先出:但这种优先队列搞特殊,不是按照进队列的时间顺序,而是按照每个元素的优先级来比拼,优先级高的在堆顶. 这也很容 ...

  4. NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)

    29.最小的K个数 应该记住大顶堆和小顶堆的区别与联系,并不难 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 示例1 输入 ...

  5. C++大顶堆和小顶堆

    C++大顶堆和小顶堆 原理 大顶堆 小顶堆 大顶堆和小顶堆对比图 大顶堆和小顶堆的实现代码 vector和push_heap.pop_heap实现堆 建堆 调整堆 priority_queue实现堆 ...

  6. c语言标准模板小顶堆,堆排序(大顶堆、小顶堆)----C语言

    堆排序 之前的随笔写了栈(顺序栈.链式栈).队列(循环队列.链式队列).链表.二叉树,这次随笔来写堆 1.什么是堆? 堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被 ...

  7. leetcode之大顶堆和小顶堆

    leetcode295解法: class MedianFinder { private PriorityQueue<Integer> large; private PriorityQueu ...

  8. 堆排序之 大顶堆和小顶堆 c语言

    百度得到的堆定义如下: 堆的定义如下:n个元素的序列{k1,k2,ki,-,kn}当且仅当满足下关系时,称之为堆. (ki <= k2i,ki <= k2i+1)或者(ki >= k ...

  9. 剑指offer:数据流中的中位数(小顶堆+大顶堆)

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

最新文章

  1. BZOJ 1801 [Ahoi2009]中国象棋(线性动规)(洛谷P2051)
  2. 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真
  3. java接口与类相同不同_浅谈java的接口和C++虚类的相同和不同之处
  4. React源码学习——ReactClass
  5. Windows核心编程 第二十章 DLL的高级操作技术
  6. 关于数位动规(入门到进阶,难度中档)
  7. oledb 获取所有表的名字和列名
  8. JavaScript实现按位的isPowerOfTwo算法(附完整源码)
  9. DGL教程【三】构建自己的GNN模块
  10. 402.移掉K位数字,使得剩下数字最小
  11. sql 触发器的常用语句(转)
  12. lucene 建索引
  13. ApiCloud数据Url请求
  14. 修改整个app的字体
  15. sql的 lpad函数
  16. 下载 MIUI任意型号卡刷包/线刷包
  17. 吃豆豆--Java小游戏
  18. dBm、mw、dB三者之间的关系
  19. 2018-03-08,模板消息推送,全代码,多多指教
  20. opencv-11-中值滤波及自适应中值滤波

热门文章

  1. ThinkPHP6 API 单文件+多文件上传代码实现方式
  2. char* 与 烫烫烫烫烫
  3. 计算机的桌面的路径,如何设置电脑保存路径在桌面上?
  4. 分类和聚类的区别以及各自的常见算法
  5. 装饰器模式--Decorator
  6. adams功能区不显示_不只是屏幕变大 2021款哈弗F7/F7x主要升级在哪?
  7. ——————猿小王日记——————
  8. 针对小程序的漏洞挖掘
  9. 微信小程序使用表单组件实现用户信息搜集问卷调查案例
  10. python 编译器spyder 安装_Spyder-Python-安装外部软件包