파이썬 힙 자료구조
파이썬 heapq 모듈은 heapq (priority queue) 알고리즘을 제공한다.
모든 부모 노드는 그의 자식 노드보다 값이 작거나 큰 이진트리(binary tree) 구조인데, 내부적으로는 인덱스 0에서 시작해 k번째 원소가 항상 자식 원소들(2k+1, 2k+2) 보다 작거나 같은 최소 힙의 형태로 정렬된다.
heapq는 내장 모듈로 별도의 설치 작업 없이 바로 사용할 수 있다.
힙 함수 활용하기
- heapq.heappush(heap, item) : item을 heap에 추가
- heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨.
- heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 변환함 (in linear time, O(N) )
예시
import heapq
heap = []
heapq.heappush(heap, 50)
heapq.heappush(heap, 10)
heapq.heappush(heap, 20)
print(heap)
[10, 50, 20]
import heapq
heap = []
heapq.heappush(heap, 4)
heapq.heappush(heap, 3)
heapq.heappush(heap, 2)
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
print(heap)
[1, 2, 3, 5, 4]
'Algorithm > Data Structure' 카테고리의 다른 글
[Java] int 형(Primitive type)배열을 List로 + 내림차순( Stream 사용) (0) | 2022.11.22 |
---|---|
[Java] 자바의 데이터 타입(primitive type, reference type) (0) | 2022.11.22 |
Python Deque(Double-Ended Queue) + Stack, Queue 간단개념 (0) | 2021.12.23 |
Arrays.sort ( 사전순서대로 정렬해주는 메소드) (0) | 2021.10.25 |
String, StringBuffer/ StringBuilder (0) | 2021.06.23 |