gpt4 book ai didi

tree - 为什么二叉堆作为数组比作为树更好?

转载 作者:行者123 更新时间:2023-12-04 00:56:40 26 4
gpt4 key购买 nike

在制作二进制最大堆时,为什么最好将它实现为基于数组而不是基于树(基于树,每个节点也有一个指向它的父节点的指针)?
在运行时分析、内存使用、性能...

对于二进制最大堆,运行时间为:

  • 插入:O(lg n)
  • 删除最小值:O(lg n)
  • 合并:O(n)

  • 对于树实现
  • 插入:O(lg n)
  • 删除最小值:O(lg n)
  • 合并:O(n)

  • 谁能详细解释一下?

    最佳答案

    树使用更多的时间和内存。复杂性是相同的,但常数因素是不同的。

    与基于数组的堆相比,树的指针使用大量内存,在堆中您几乎不需要任何额外的空间,但值本身占用的空间。操纵这些指针也需要时间。分配和解除分配节点也可能需要一些时间和空间......

    此外,不能保证树的节点会在内存中在一起。如果这两种选择中的任何一种利用缓存,它就是基于数组的堆。

    关于tree - 为什么二叉堆作为数组比作为树更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719007/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com