由 heapq 库创建的在 python 堆中窥视的官方方法是什么?现在我有
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
可以说,这不是很好。我可以总是假设这heap[0]
是堆的顶部并使用它吗?还是会假设太多的底层实现?
是的,您可以做出这个假设,因为它在文档中说明:
堆是所有k
heap[k] <= heap[2*k+1]
的数组,从零开始计数元素。为了比较,不存在的元素被认为是无限的。堆的有趣属性是它 始终是它的最小元素。heap[k] <= heap[2*k+2]
heap[0]
(这可能是没有peek
功能的原因:不需要它。)
如果您使用的是 Python 2.4 或更新版本,您还可以使用 heapq.nsmallest()。