数据结构之堆的实现

首先我们要想堆应该用什么实现,我们这里可以使用数组,因为每一层的数是有限个的,所以我们可以很容易将数的每一个位置对应到数组中去。

那我们就可以仿照顺序表写出我们的结构。

然后我们要考虑我们要实现哪些函数。

最基本的功能初始化和销毁,不再赘述。

然后我们实现打印

然后我们实现经典的功能入堆。

重点保证空间足够。然后我们通过Adjustup去维护大,小根堆的堆放。(此处实现的是大根堆)

将其与父节点比较,然后进行移动,直至合适位置。

然后我们实现判断是否为空和显示堆顶元素。

然后就是本贴的最后的功能,出堆。

将最后一个元素移动到堆顶,然后再进行下放,维护大根堆。

综上就是全部内容。

相关推荐
im_AMBER5 小时前
Leetcode 74 K 和数对的最大数目
数据结构·笔记·学习·算法·leetcode
长安er6 小时前
LeetCode 206/92/25 链表翻转问题-“盒子-标签-纸条模型”
java·数据结构·算法·leetcode·链表·链表翻转
lxh01136 小时前
最长递增子序列
前端·数据结构·算法
菜鸟233号8 小时前
力扣513 找树左下角的值 java实现
java·数据结构·算法·leetcode
FMRbpm8 小时前
队列练习--------最近的请求次数(LeetCode 933)
数据结构·c++·leetcode·新手入门
长安er10 小时前
LeetCode 34排序数组中查找元素的第一个和最后一个位置-二分查找
数据结构·算法·leetcode·二分查找·力扣
liu****11 小时前
9.二叉树(一)
c语言·开发语言·数据结构·算法·链表
sin_hielo11 小时前
leetcode 3577
数据结构·算法·leetcode
CS创新实验室13 小时前
计算机考研408【数据结构】核心知识点总结
数据结构·考研·计算机·408
步达硬件14 小时前
【matlab】代码库-一维线性插值
数据结构·算法·matlab