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 |