开发者

Peeking in a heap in python

开发者 https://www.devze.com 2022-12-12 06:00 出处:网络
What is the official way of peeking in a python heap as created by the heapq libs? Right n开发者_StackOverflow中文版ow I have

What is the official way of peeking in a python heap as created by the heapq libs? Right n开发者_StackOverflow中文版ow I have

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest

which is arguably, not very nice. Can I always assume that heap[0] is the top of the heap and use that? Or would that assume too much of the underlying implementation?


Yes, you can make this assumption, because it is stated in the documentation:

Heaps are arrays for which heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2] for all k, counting elements from zero. For the sake of comparison, non-existing elements are considered to be infinite. The interesting property of a heap is that heap[0] is always its smallest element.

(And that's probably the reason there is no peek function: there is no need for it.)


If you're using Python 2.4 or newer, you can also use heapq.nsmallest().

0

精彩评论

暂无评论...
验证码 换一张
取 消