关键代码:

void head_swap(int a, int b){

swap(ph[hp[a]], ph[hp[b]]);

swap(hp[a], hp[b]);

swap(h[a], h[b]);

}

思想:

如何解决插入的第 k 个数是什么?在链表中,idx 取 第几个插入的数,idx 与 k 一一对应,对于堆来说,由于堆是一棵完全二叉树,适合以下表连接各个节点之间的关系,所以应当将第几个插入的数与下标相对应。于是产生了ph[i] = a; 但在交换a, b两个位置的数时,ph[i] = a 、ph[j] = b 也需要交换,但仅仅靠swap(ph[i], ph[j])不能完全交换,还需要交换i,j,因此需要hp[a] = i, hp[b] = j数组作为ph数组的反函数进行操作。

最新文章

  1. lua面试基础知识
  2. QQ右下角图标不见了
  3. AJAX三种返回值方式
  4. Cocos2d-x使用UserDefault数据持久化实例:保存背景音乐和音效设置
  5. 长期支持版本(即不自动更新版本) - Flash Player 18.0.0.268
  6. Debian8 部署 laravel 5.3 (php7.0 + nginx)
  7. Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
  8. no device found for connection ‘ System eth0′问题
  9. XP实验报告
  10. 电商网站开发记录(三) Spring的引入,以及配置详解
  11. Linux编程 9 (shell类型,shell父子关系,子shell用法)
  12. MFC开发中添加自定义消息和消息响应函数
  13. JDK、JRE、JVM之间的关系
  14. Adobe Photoshop CC 2015使用及扩展工具
  15. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
  16. UVA548
  17. Codeforces Round #290 (Div. 2) 拓扑排序
  18. Scrum立会报告+燃尽图(十月十六日总第七次):总结工作经验,商讨未来策略
  19. Linux 内核分析第八周学习笔记
  20. unity3d的三种平面坐标系

热门文章

  1. STM32F0_HAL初始化系列:输入捕捉
  2. 学习Java Day29
  3. 自己从零写操作系统GrapeOS——1.GrapeOS介绍
  4. Nginx单服务器部署多个网站,域名
  5. git 合并dev分支到 master分支 (merge)
  6. LeetCode-19 删除链表倒数第N个结点
  7. 代数余子式的由来/代数余子式为什么-1的系数是ⁱ⁺ʲ?/证明一个n阶行列式,如果其中第i行(或第j列)所有元素除aᵢⱼ外都为零,那么这行列式等于aᵢⱼ与它的代数余子式的乘积/证明行列式按行(列)展开法则:n(n>1)阶行列式等于它任意一行(列)的所有元素与它们对应的代数余子式的乘积的和。
  8. 后台Mysql存储过程调用
  9. lg9018题解
  10. xlwings rest api