我可以只使用 percolateDown 实现堆吗?

标签 c data-structures heap

我需要在 C 中实现堆数据结构。 在我做一些研究时,我看到人们使用 buildHeap()、constructHeap() 将数组转换为堆。我的问题是,我是否可以在每次需要添加到堆时只对新添加的项目调用 percolateDown(),而不是实现这些功能?

谢谢!

最佳答案

堆可以在线性时间内构建,而您提出的方法将需要 O(N log(N)) 时间。更好地在单独的函数中构造堆以获得更好的性能。

关于我可以只使用 percolateDown 实现堆吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668624/

相关文章:

c - SUN RPC(ONC/RPC): Calculating round trip time (or pinging) using null procedure in C

java - 用于存储具有时间线的数据范围的数据结构

java - 是否有斐波那契堆的标准 Java 实现?

algorithm - 从堆中间删除一个节点

c - 如何只交换堆节点的数据

c++ - C++中堆类的多态性

c - 如何解释稍微复杂的指针声明

c++ - 将一些代码行包​​装到单个宏中的方法

ios - NSString 到带有希腊字符的 char*

algorithm - Dijkstra 算法 : Do I iterate through the neighbors or the children?