#삽입
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
힙큐는 최소힙만 다룬다.
힙큐를 최대값으로 쓰려면 다 마이너스 처리한 후 최소값을 찾는다. 그리고 최대값을 찾으면 된다.