문제
Heapq Libs가 만든 파이썬 힙에서 엿보기의 공식적인 방법은 무엇입니까? 지금은 가지고 있습니다
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
그것은 틀림없이 그리 좋지 않습니다. 항상 그렇게 가정 할 수 있습니다 heap[0]
힙의 상단이 그것을 사용합니까? 아니면 기본 구현이 너무 많이 가정 될까요?
해결책
예,이 가정을 할 수 있습니다. 선적 서류 비치:
힙은 배열입니다
heap[k] <= heap[2*k+1]
그리고heap[k] <= heap[2*k+2]
모든 케이, 0에서 요소 계산. 비교를 위해, 존재하지 않는 요소는 무한한 것으로 간주됩니다. 힙의 흥미로운 속성은 그 것입니다heap[0]
항상 가장 작은 요소입니다.
(그리고 아마도 아마도 peek
기능 : 필요하지 않습니다.)
다른 팁
Python 2.4 이상을 사용하는 경우 Heapq.nsmallest ()를 사용할 수도 있습니다.
제휴하지 않습니다 StackOverflow