Develop/Python
[ Python ] | heapq 사용법 | heapsort, 우선순위큐
은세라
2021. 8. 2. 03:40
1. 정의
complete binary tree
이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공
=> 원소들이 항상 정렬된 상태로 추가되고 삭제
2. 선언
import heapq
#다른 list를 heap으로 만든다
heapq.heapify(list)
#새로 선언
heap = []
heapq 모듈은 일반 list로 선언해도 heap으로 쓸 수 있다.
자바의 PriorityQueue 클래스처럼 리스트와 별개의 자료구조가 아닌 점에 유의해야함.
3. 기본 메소드
#원소추가
heapq.heappush(list, x) #(heap, 원소)
#원소삭제 -> 최소값 삭제(반환)
heapq.heappop(list)
#삭제하지않고 최소값 얻기
heap[0]
4. 활용
기본 제공되는 heapq는 Min heap이기 때문에 Max heap을 사용하려면 추가 작업이 필요
import heapq
nums = [4, 1, 7, 3, 8, 5]
heap = []
for num in nums:
heapq.heappush(heap, (-num, num)) # (heap, (우선 순위, 값))
while heap:
print(heapq.heappop(heap)[1]) # index 1
출처 : https://www.daleseo.com/python-heapq/
[파이썬] heapq 모듈 사용법
Engineering Blog by Dale Seo
www.daleseo.com