%3C/text%3E%3C/svg%3E">
💻
💻 IT·개발

이진 힙 인덱스 계산기

입력하면 바로 계산됩니다.

입력값

이진 힙 인덱스 계산기 쉽게 이해하기 — 개념과 원리

이진 힙은 보통 노드를 포인터로 연결하지 않고 일반 배열에 저장하며, 트리 구조는 위치로 표현합니다. 이 계산기는 0부터 시작하는 배열 인덱스를 넣으면 그 노드의 부모, 두 자식, 트리에서의 깊이를 알려 줍니다. 힙 정렬이나 우선순위 큐를 구현하거나 위로 올리기(sift-up), 아래로 내리기(sift-down) 코드를 점검할 때 유용합니다.

힙 5번 노드와 부모·자식0부터 세는 배열 힙에서 5번의 부모는 ⌊(5−1)/2⌋ = 2, 자식은 11과 12, 깊이는 ⌊log₂ 6⌋ = 2입니다.같은 힙을 트리와 배열로 보기01234567891011120123456789101112배열부모 2⌊(5−1)/2⌋자식 11, 122·5+1, 2·5+2깊이 2⌊log₂ 6⌋
포인터 없이 계산만으로 5번의 부모 2, 자식 11·12를 찾습니다.

계산 방법

자식 인덱스가 힙 크기보다 작을 때만 실제로 존재하는 자식입니다.

원리

힙은 완전 이진 트리입니다. 마지막 층을 뺀 모든 층이 꽉 차 있고, 마지막 층은 왼쪽부터 채웁니다. 노드를 위층부터 왼쪽에서 오른쪽 순서로 읽으면 그대로 배열 순서가 됩니다. 깊이 d인 층에는 노드가 2ᵈ개 있고 인덱스 2ᵈ − 1에서 시작합니다. 앞선 노드들의 자식이 차례로 두 개씩 자리를 차지하므로 노드 i의 자식은 2i + 1과 2i + 2가 되고, 이를 거꾸로 풀면 부모 공식이 나옵니다. 포인터가 필요 없어 메모리를 아끼고 캐시 효율도 좋습니다. 교재에서 많이 쓰는 1부터 시작하는 인덱스라면 부모는 ⌊i ÷ 2⌋, 자식은 2i와 2i + 1입니다.

예제 풀이

  1. 입력값: i = 5입니다.
  2. 부모: ⌊(5 − 1) ÷ 2⌋ = 2입니다.
  3. 자식: 2 × 5 + 1 = 11, 2 × 5 + 2 = 12이므로 11, 12입니다.
  4. 깊이: ⌊log₂ 6⌋ = ⌊2.585⌋ = 2입니다.

확인해 보면 깊이 2인 층은 인덱스 3~6이고, 인덱스 2의 자식은 5와 6이므로 5는 왼쪽 자식입니다.

노드 인덱스 (0부터) 값에 따른 부모 변화노드 인덱스 값에 따른 부모 변화012341.252.53.7556.257.510예제 값: 2노드 인덱스 (0부터)
다른 값은 그대로 두고 “노드 인덱스 (0부터)”만 바꿔 계산기를 다시 돌린 결과입니다. 금색 점이 예제 값이며, 위에 값을 입력하면 내 값으로 다시 그려집니다.
노드 인덱스 (0부터)부모
1.250
2.50
3.751
52
6.252
7.53
104

결과 해석

깊이는 이 노드에서 위로 올리기를 할 때 최대 몇 번 교환하는지를 알려 줍니다. 원소가 n개인 힙의 높이는 ⌊log₂ n⌋이므로 삽입과 최솟값(최댓값) 꺼내기는 O(log n)입니다. 크기가 12인 힙이라면 인덱스 12가 범위를 벗어나므로 인덱스 5는 왼쪽 자식(11)만 가집니다. 잎이 아닌 마지막 노드는 ⌊n ÷ 2⌋ − 1이며, 상향식 힙 구성은 여기서 시작합니다.

흔한 실수

주의: 이 공식은 이진 힙에만 해당합니다. d진 힙은 부모가 ⌊(i − 1) ÷ d⌋, 자식이 d·i + 1부터 d·i + d까지입니다.

자주 묻는 질문

힙은 정렬된 배열인가요?

아닙니다. 부모가 자식보다 작거나(최소 힙) 크다는(최대 힙) 것만 보장하며 형제끼리는 순서가 없습니다.

원소 n개로 힙을 만드는 데 얼마나 걸리나요?

상향식으로 만들면 O(n)이며, 하나씩 삽입하는 O(n log n)보다 빠릅니다.

우선순위 큐에 왜 힙을 쓰나요?

최솟값이나 최댓값을 O(1)에 확인하고, 삽입과 삭제를 추가 메모리 없이 O(log n)에 처리하기 때문입니다.

출처: J. W. J. Williams, "Algorithm 232: Heapsort", Communications of the ACM 7(6), 1964 · T. H. Cormen 외, Introduction to Algorithms, MIT Press

2026년 11월 8일 확인. 표준 공식과 RFC/IEEE 정의를 사용해 브라우저 안에서만 계산합니다. 입력한 내용은 어디에도 전송되지 않습니다.

💻 IT·개발 계산기 전체 →🏠 홍라이프 계산기 홈 →