(사진출처 https://creativecommons.org/licenses/by-nc/2.0/kr/)
우선순위 큐를 구현하는 데 사용되는 중요한 자료구조입니다.
힙은 완전이진트리(Complete Binary Tree) 구조를 가지며, 부모 노드의 값이 자식 노드의 값보다 항상 크거나(최대 힙) 작은(최소 힙) 특성을 만족합니다.
새로운 원소를 힙에 추가합니다. 이 과정에서 힙 특성을 유지합니다.
최대 힙에서는 최댓값을 삭제하고, 최소 힙에서는 최솟값을 삭제합니다. 이 역시 힙 특성을 유지하며 수행됩니다.
주어진 배열을 힙 특성을 만족하도록 변경합니다. 보통 특정 노드부터 시작하여 하향식 또는 상향식으로 힙 특성을 만족시킵니다.

힙은 이진트리를 사용하므로 배열로도 효과적으로 구현할 수 있습니다.
일반적으로 배열의 인덱스 0부터 시작하면 부모와 자식의 인덱스 관계는 다음과 같습니다
부모 인덱스 (parent): i
왼쪽 자식 인덱스 (left child): 2i + 1
오른쪽 자식 인덱스 (right child): 2i + 2
(사진출처 https://creativecommons.org/licenses/by-nc/2.0/kr/)
(사진출처 https://creativecommons.org/licenses/by-nc/2.0/kr/)
최대 힙
1. 부모보다 더 큰 자식이 없으면 교환하지 않고 끝낸다.
2. 부모보다 더 큰 자식이 하나만 있으면 그 자식하고 교환하면 된다.
3. 부모보다 더 큰 자식이 둘 있으면 자식들 중 큰 값과 교환한다.
최소 힙
1. 부모보다 더 작은 자식이 없으면 교환하지 않고 끝낸다.
2. 부모보다 더 작은 자식이 하나만 있으면 그 자식하고 교환하면 된다.
3. 부모보다 더 작은 자식이 둘 있으면 자식들 중 작은 값과 교환한다.