其它pta数据结构编程题请参见:pta

这道题考察的是最小堆。

堆是一个完全二叉树,因此可用数组表示,一个下标为 i 的结点的父节点下标为 i / 2,子结点下标为 2i 和 2i + 1。

插入元素:先把元素放到数组的最后面,然后不断循环和父节点比较,如果小于父节点则交换。

数组的下标为0存放一个很小的值作为哨兵,当进行插入操作时,如果插入的元素需要放到下标为1的位置时,和下标为0的值比较时会大于这个很小的值,因而会停止。

 #include <iostream>
#include <vector>
using namespace std; int heap[];
int size = ;
void insert(int x);
void printTrace(int i); int main()
{
int n, m, i, t;
cin >> n >> m;
heap[] = -;//哨兵
for (i = ; i < n; i++)
{
cin >> t;
insert(t);
}
for (i = ; i < m; i++)
{
cin >> t;
printTrace(t);
}
return ;
} void insert(int x)
{
int i;
for (i = ++size; heap[i / ] > x; i /= )
heap[i] = heap[i / ];
heap[i] = x;
} void printTrace(int i)
{
vector<int> v;
while (i)
{
v.push_back(heap[i]);
i /= ;
}
for (int j = ; j < v.size(); j++)
{
if (j) cout << " ";
cout << v[j];
}
cout << endl;
}

最新文章

  1. JS的函数
  2. OpenCv编程
  3. dojo Provider(script、xhr、iframe)源码解析
  4. 【转】十分详细的xStream解析
  5. java初探native
  6. bzoj 2190 [SDOI2008]仪仗队(欧拉函数)
  7. JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
  8. Cache选型的一些思考
  9. yii2.0的gii生成代码bug
  10. JForum 2.19源码部署到eclipse
  11. ACM YTU 1012 u Calculate e
  12. SqlServer sys.partition_view
  13. 解决JSP中,类无法被编译的问题(XX cannot be resolved to a type)
  14. 20160208.CCPP体系详解(0018天)
  15. 4.26 IO流
  16. &lt;算法图解&gt;读书笔记:第2章 选择排序
  17. python 对时间操作
  18. jQuery图片延迟加载插件:jquery.lazyload
  19. Bash数组
  20. Django-建立网页

热门文章

  1. 【Spring-任务调度】
  2. html5表单及新增的改良元素
  3. oracle 导入sql文件乱码
  4. SCUT - 321 - Tobby&#39;s magic - 线段树
  5. 浅谈JavaScript--事件委托与事件监听
  6. 洛谷P2484 [SDOI2011]打地鼠
  7. 洛谷P1282 多米诺骨牌
  8. 洛谷P3258 [JLOI2014]松鼠的新家
  9. eclipse导出带有图片、音效、其他二进制文件的jar文件的经历
  10. Objective-C对象的申请空间与初始化