我试图比较使用数组和链表实现二进制堆。 我认为数组在各方面都更好,因为所有操作都可以使用链表快于或等于操作。它还需要更少的内存。
但是有没有理由为什么使用链表比二进制数组更好?
答案 0 :(得分:1)
二进制堆很少表示为显式树。它们使用的内存比阵列版本多,参考位置差,并且(正如您在前面的问题中所述)更难实现。
研究二元堆作为树的马林原因是为了建立数据结构的直觉。仅仅给出数组表示的二元堆的属性和正确性是很难的,但是通过将它们连接回二叉树表示,设计和证明二进制堆算法的正确性变得容易得多。
希望这有帮助!