假定我们要解决这样一个问题:有一个集合,每次操作都可能从中
添加数据,或
取出最大值,应该怎么做?假如使用暴力,仅使用一个数组来维护,我们就需要经常对数据集进行一次遍历(值是
\(O(n)\))。尽管简单,但如果你需要重复地进行多次这类查询,效率就很低了。这时,二叉堆作为一种高效的数据结构,提供了更好的性能。它能够在
\(O(\log n)\) 的时间复杂度内进行最大值或最小值的查询和删除操作,解决了暴力方法中遍历整个数组的问题。