Heap
お尻
バイナリツリー
ツリー
完全バイナリツリー
お尻
優先順位キューは、
最大ヒップ
鍵値が最も大きいノードを検索するための完全なバイナリツリー
最小ヒップ
鍵の値が最も小さいノードを検索するための完全なバイナリツリー
ヒップ演算
#삽입
a = 10
def heap_insert(heap,a) :
#힙에 가장 마지막에 자료를 넣는다.
heap.append(a)
#힙의 길이
last = len(heap)
#루트노드가 아니면
while last != 1 :
#부모는 현재에서 2를 나눈 몫
parent = lats//2
#부모가 자식보다 작으면 위치 변경
if heap[parent] < heap[last] :
heap[parent],heap[last] = hepa[last],heap[parent]
last = parent
else :
break
#삭제
def heap_delete(heap) :
#힙의 루트를 초기화
heap[1] = None
#트리의 루트에 마지막 값을 넣음
heap[1] = heap.pop()
#루트의 번호
i = 1
#힙의 마지막이 아니면
while 2*i+1 <len(heap) :
#자식들중에 더 큰 값을 기준으로
if heap[2*i]<heap[2*i+1] :
tmp = 2 *i +1
else :
tmp = 2*i
#부모보다 자식이 크면 위치 변경
if heap[i] > heap[tmp] :
heap[i],heap[tmp] = heap[tmp],heap[i]
i = tmp
ヒップホップは最小のヒップホップにのみ関与する.hipqを最大値に書く場合は、減算を行い、最小値を探します.そして最大値を見つければいいです.
Reference
この問題について(Heap), 我々は、より多くの情報をここで見つけました https://velog.io/@holawan/Heapテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol