728x90
반응형
- 우선 순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료 구조
힙(Heap)
- 우선 순위 큐를 구현하기 위해 사용하는 자료 구조 중 하나
- 최소 힙(Min Heap)과 최대 힙(Max Heap) 이 있다.
- 다익스트라 최단 경로 알고리즘을 포함해 다양한 알고리즘에서 사용된다.
우선순위 큐 구현 방식 | 삽입 시간 | 삭제 시간 |
리스트 | O(1) | O(N) |
힙(Heap) | O(logN) | O(logN) |
힙 라이브러리 사용 예제 : 최소 힙
import heapq
# 오름차순 힙 정렬
def heapsort(iterable) :
h = []
result = []
for value in iterable : # 모든 원소를 차례대로 힙에 삽입
heapq.heappush(h, value)
for i in range(len(h)) : # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
result.append(heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result)
힙 라이브러리 사용 예제 : 최대 힙
import heapq
# 내림차순 힙 정렬
def heapsort(iterable) :
h = []
result = []
for value in iterable : # 모든 원소를 차례대로 힙에 삽입
heapq.heappush(h, -value)
for i in range(len(h)) : # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
result.append(-heapq.heappop(h))
return result
result = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
print(result)
728x90
반응형
'Algorithm' 카테고리의 다른 글
플로이드-워셜 알고리즘 (0) | 2023.05.08 |
---|---|
다익스트라 알고리즘 (1) | 2023.05.08 |
다이나믹 프로그래밍 (0) | 2023.05.06 |
이분 탐색 (1) | 2023.05.04 |
BFS(너비 우선 탐색) (0) | 2023.04.30 |