문제 11 · 배열을 힙으로 만들기
문제 11 [4점]
원소
풀이 및 해설
시간복잡도(1점). 상향식 buildHeap(아래에서 위로 percolateDown)을 쓰면
즉 선형 시간입니다.
이유(3점). buildHeap은 배열을 완전 이진 트리로 보고, 마지막 내부 노드(인덱스 percolateDown(아래로 내리며 힙 성질 회복)을 수행합니다. 한 노드의 percolateDown 비용은 그 노드의 높이
얼핏 보면 노드마다
- 높이가
인 노드는 최대 개 존재합니다. (잎에 가까울수록 노드 수가 많고 높이는 작음) - 따라서 전체 비용은 각 노드의 높이 합에 비례합니다.
여기서 급수
즉, 높은 노드는 비용이 크지만 그 개수가 매우 적고(루트는 단 1개), 개수가 많은 잎 근처 노드는 비용이 거의 0이라, 높이의 총합이
(참고: 원소를 하나씩 insert로 넣는 방식은 각 삽입이 buildHeap이 더 빠릅니다.)