我读过关于应用程序的内存分配的文章,我也了解到,内存中的堆是在启动时动态分配的。然而,还有另一个概念叫做min堆,它是一种以树的形式组织的数据结构,其中每个父节点都较小或等于其子节点。
因此,我的问题是:为给定应用程序在启动时分配的堆与包含通常称为'heapify‘等函数的min堆数据结构之间有什么关系?是否有任何关系,还是最小堆数据结构更多的是一个更高层次的编程概念?如果没有关系,有没有理由给他们起同样的名字?
对某些人来说,这似乎是一个愚蠢的问题,但它实际上已经在工作中引发了一场辩论。
发布于 2022-02-16 17:38:06
堆是一种数据结构,它实际上是一个完整的二叉树,有一些额外的属性。有两种类型的堆:
在min堆中,根在树中的值最低,当您弹出根时,下一个最低的元素出现在顶部。为了将树转换为堆,我们使用了堆化算法。在c++中,它也称为优先级队列。通常,作为一个有竞争力的程序员,我们对堆使用STL函数,这样我们就不必从头开始创建堆了。Max堆正好相反,根部最大。通常使用堆是因为它具有删除和插入元素的O(logN)时间复杂度,因此甚至可以在10^6这样的严格约束下工作。
现在我可以理解内存堆和堆数据结构之间的混淆,但是它们是完全不同的东西。数据结构中的堆只是存储数据的一种方式。
https://stackoverflow.com/questions/71150911
复制