트리 기반의 자료 구조
최소 힙 : 부모가 항상 자식보다 작거나 같음
최대 힙 : 부모가 항상 자식보다 크거나 같음
힙은 좌우 정렬되어 있는 것은 아님
단지 최대, 최소 힙에 따라 부모 - 자식간의 관계만 정의 되어 있음
이진 힙(Binary Heap) : 자식이 둘인 힙
최소 힙 기준
업힙(Up-Heap)
[1] 요소를 가장 하위 레벨의 최대한 왼쪽으로 삽입
[2] 부모 값과 비교해 값이 더 작은 경우 위치 변경
[3] 계속해서 부모 값과 비교해 위치 변경(가장 작은 값일 경우 루트까지 올라감)
루트를 추출하면 됨
추출 후 힙의 특성을 유지하는 작업 때문에 시간 복잡도는 O(logn)
다운힙(Down-Heap) : 업힙의 반대 과정
출처 : 파이썬 알고리즘 인터뷰