1. Week7. 힙
특성
완전 이진 트리 (왼쪽부터 차례로)
최대 힙: 임의의 노드 값은 부모 보다 클 수 없다 (Left, Right의 대소 관계는 중요치 않다)
서브 트리 모두 힙 (재귀적)
구현에 필요한 프로시저
MAX-HEAPIFY O(lg n)
BUILD-MAX-HEAP O(n)
HEAPSORT O(n lg n)
PARENT(i) = i / 2
LEFT(i) = 2i
RIGHT(i) = 2i + 1
2. MAX-HEAPIFY
현재 노드가 자식보다 큰 값인지 확인
작을 경우 자식으로 내려 보냄
4
9 2
9
4 2
재귀 호출 하더라도
최대 힙의 높이 만큼이기 때문에
O(lg n)
3. BUILD-MAX-HEAP
배열을 최대 힙으로 만드는 프로시저
MAX-HEAPIFY를 마지막 노드부터
루트까지 호출하면 최대 힙 완성
자식이 있는 노드에 한해서만 호출
(A[length/2+1].. A[n] 생략)
N * MAX-HEAPIFY 이므로 O(n lg n)
MAX-HEAPIFY를
높이 h인 노드에서 호출
높이 h인
노드의 갯수