1. Heap
- Heap : 무더기, 더미를 의미함
- 컴퓨터 기억 장소에서 일부분이 프로그램에 할당 되었다가 회수되는 작용이 되풀이되는 영역
- Heap의 기억장소는 대부분 Pointer 변수를 통해 동적으로 할당받고 돌려줌
- 아래 메모리 구조 그림을 참고
2. 자료구조 Heap
- 자료구조로 쓰이는 Heap: 데이터에서 최댓값, 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리
- 완전 이진 트리: 자식노드가 왼쪽부터 꽉 채워지는 트리
- 부모 노드 index = 자식 노드 index // 2
- Left 자식 노드 index = 부모 노드 index * 2
- Right 자식 노드 index = (부모 노드 index * 2) + 1
- 배열로 구현할 때 index 1부터 시작하는게 편함
3. Heap 사용 이유
- 배열에서 max, min 찾을 때: O(n) 소요
- Heap에서 max, min 찾을 때: O(logN) 소요
- 파이썬 기본 내장 함수 max, min의 시간 복잡도는 O(n)임
- 우선순위 큐 등과 같이 max, min을 빠르게 찾아야 하는 알고리즘에 활용하기 좋다!
4. Heap의 동작
- 데이터 삽입: Heap은 완전 이진 트리이기 때문에 삽입할 노드가 기본적으로 왼쪽 최하단부터 채워짐
'PS 기록 > Algorithm' 카테고리의 다른 글
2457 - 공주님의 정원 (Greedy 자력솔하기) (0) | 2024.02.14 |
---|---|
[신촌 ICPC 알고리즘 캠프] 최단거리 알고리즘 (24.01.22) (0) | 2024.01.23 |
알고리즘 스터디 기록 24.01.06 (2) | 2024.01.07 |
최단거리 : 다익스트라 Dijkstra (Python) (0) | 2023.03.30 |
이진 탐색 Binary Search (Python) (0) | 2023.03.26 |