우선순위 큐를 위하여 만들어진 자료구조
자료구조 | 삭제순서 |
---|---|
스택 | 마지막에 들어온게 먼저 삭제된다. |
큐 | 먼저 들어온 게 먼저 삭제된다. |
우선순위큐 | 우선순위 가장 높은게 먼저 삭제된다. |
힙
으로 하는게 효율적완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조
힙을 저장하는 표준적인 자료구조는 배열이다.
ex) 최대힙에 새로운 요소 8을 삽입해보자
ex) 최대 힙에서 최댓값을 삭제해보자.
파이썬에서는 내장기능으로 heapq를 제공하고 있읍니다.
import heapq
heap = []
heapq.heappush(heap,2)
heapq.heappush(heap,1)
heapq.heappush(heap,5)
heapq.heappush(heap,7)
heapq.heappush(heap,4)
heapq.heappush(heap,9)
# [1,2,4,5,7,9] 의 힙구조
arr = [1,2,4,5,7,9]
heap=[]
for a in arr:
heapq.heappush(heap,-a)
while heap:
print(heapq.heappop(heap)*-1)