数据结构之堆的实现

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

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

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

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

然后我们实现打印

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

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

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

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

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

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

综上就是全部内容。

相关推荐
图码9 分钟前
矩阵操作优化:从 O(q×n) 到 O(q) 的优雅进阶
数据结构·线性代数·算法·性能优化·矩阵·python3.11
YL2004042617 分钟前
046二叉树展开为链表
数据结构·leetcode·链表
蝈理塘(/_\)大怨种41 分钟前
快速排序的三路划分和自省排序
数据结构·算法
qq_296553271 小时前
矩阵转置的两种实现方式:从暴力法到原地算法
数据结构·线性代数·算法·青少年编程·矩阵
shylyly_1 小时前
内存函数的使用和实现
数据结构·算法
代码改善世界2 小时前
【C++进阶】二叉搜索树
java·数据结构·c++
如竟没有火炬2 小时前
至少有K个重复字符的最长子串
开发语言·数据结构·python·算法·leetcode·动态规划
不知名的忻4 小时前
堆排序(Java)
java·数据结构·算法·排序算法
shylyly_4 小时前
大小端字节序
数据结构·算法·联合体·大小端字节序·字节序判断
故事和你914 小时前
洛谷-【图论2-1】树6
开发语言·数据结构·c++·算法·深度优先·动态规划·图论