数据结构之堆的实现

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

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

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

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

然后我们实现打印

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

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

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

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

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

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

综上就是全部内容。

相关推荐
白白白小纯2 小时前
每日算法day3—回文链表,链表分割
c语言·数据结构·算法·leetcode
zander2583 小时前
35. 搜索插入位置:从边界语义理解二分查找
数据结构·算法·leetcode
Chen—LSN4 小时前
C语言——深度理解指针(5)
c语言·数据结构·算法·排序算法
佳児素花痴╮6 小时前
树的基础知识与查找排序算法
数据结构·算法
郝学胜-神的一滴6 小时前
Python 高级编程 026:内置数据结构之骈文纵论
开发语言·数据结构·python·程序人生·软件工程
程序员老舅12 小时前
啃透 I2C 驱动开发,才算入门嵌入式 Linux 内核驱动
数据结构·驱动开发·b树·内核·嵌入式·嵌入式开发·i2c
青山木20 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
Livia要学习1 天前
Python2和Python3字典底层原理
数据结构
青梅橘子皮1 天前
STL---map/set... “家族“详解(从使用到底层)(1)
数据结构·算法
Adios7941 天前
搜索二维矩阵 II
java·数据结构·算法