私は今ヒープの実装を理解しようとしており、私はヒープのpythonモジュールを調べます。
https://github.com/python-git/python/blob/master/Lib/heapq.py
Line236は、ヒープ配列の最後の要素に新しい項目を追加し、最後の要素を上方向に移動しようとするので、私に分かりやすいように見えます。その正しい位置。
siftdown関数の実装はヒープの正式な定義に違反していますか?
while pos > startpos:
parentpos = (pos - 1) >> 1
parent = heap[parentpos]
if newitem < parent:
heap[pos] = parent
pos = parentpos
continue
break
それは(POS-1)に、現在位置のインデックスを減少させ、// 2、そして最後にposはインデックス0 に行くかもしれだから、私にsiftupのように見えます。私は何かを誤解していますか?
OK、このツリーのルートが下にある場合は意味があります。 –