考虑以下元素列表。
h = [38, 203, 1, 45, 39, 10, 34, 90, 10, 2, 100, 1]
如果将其放入基于数组的堆中,它将按以下方式查找。
import heapq
heapq.heapify(h)
# now we have a heap that looks like this
# [1, 2, 1, 10, 39, 10, 34, 90, 45, 203, 100, 38]
找出位置的最佳方法是什么39
在这个堆里?
找出答案的一种方法是从堆中弹出项目,直到返回 39,这样,如果我们跟踪从堆中弹出项目的次数,我们就知道它的位置。然而,当我们修改堆本身时,这不是很有效。
有更好的方法来解决问题吗?