heapq libsによって作成されたPythonヒープを覗く公式の方法は何ですか?今私は持っています
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]
すべてのkについて、ゼロから要素を数える配列です。比較のために、存在しない要素は無限であると見なされます。ヒープの興味深い特性は、それheap[0]
が常に最小の要素であるということです。
(そしてそれがおそらく機能がない理由ですpeek
:それの必要はありません。)
Python 2.4以降を使用している場合は、heapq.nsmallest()を使用することもできます。