聊聊 Java 数据结构与算法中的堆最小堆和最大堆

网站建设3年前发布
110 0 0

堆的数据结构有很多种体现形式,包括;2-3堆、B堆、斐波那契堆,而在 Java API 中最常用的是用于实现优先队列的二叉堆,它是由 JWJ Williams 在 1964 年引入的,作为堆排序算法的数据结构。另外在 Dijkstra 算法等几种高效的图算法中,堆也是非常重要的。,在计算机科学中,堆(heap) 的实现是一种基于树的特殊的数据结构,它可以在数组上构建出树的结构体,并满足堆的属性;,2023030601520373cb54377ae3a6380a1717cb64ed9da12abacb880,2023030601520481c53b5121d6a6ef14013070648dedabf2d4de367,堆的实现在 Java API 中主要体现在延迟队列的实现二叉堆上,这里小傅哥单独把这部分代码拆分出来,了解下关于小堆和大堆的实现。,从对堆的数据结构介绍上可以看到,小堆和大堆的唯一区别仅是对元素的排序方式不同。所以也就是说在存放和获取元素的时候对元素的填充和摘除时,排序方式不同而已。,堆的在存放元素时,以遵循它的特点,会在存放过程中,通过队尾元素向上比对迁移。,20230306015205d164bf852b0214a298f0970737222d4b9fb681930,元素的出堆其实很简单,只要把根元素直接删除弹出即可。但剩余接下里的步骤才是复杂的,因为需要在根元素迁移走后,寻找另外的最小元素迁移到对头。这个过程与入堆正好相反,这是一个不断向下迁移的过程。,20230306015206223375d53c0816aa997256285c2f6d05202ffc660,这里以弹出元素1举例,之后将堆尾元素替换到相应的位置。整个过程分为6张图表述。,小堆是一个正序比对,测试,结果,小堆是一个反序比对,测试,结果

© 版权声明

相关文章