힙 정렬에서 '힙(Heap)'은 자료구조의 한 종류를 의미합니다. 힙은 '무언가를 쌓아 올린 더미'라는 뜻처럼, 마치 더미처럼 쌓아 올린 완전 이진 트리의 형태를 가지고 있습니다.
힙의 특징
- 완전 이진 트리: 힙은 모든 레벨이 완전히 채워져 있고, 마지막 레벨은 왼쪽부터 채워진 완전 이진 트리입니다.
- 힙 속성: 힙은 특정한 순서 속성을 만족합니다. 최대 힙의 경우 부모 노드의 값이 항상 자식 노드의 값보다 크거나 같고, 최소 힙의 경우 부모 노드의 값이 항상 자식 노드의 값보다 작거나 같습니다.
힙이라고 부르는 이유
- 힙은 데이터를 특정 순서대로 '쌓아 올린' 형태를 가지고 있습니다. 이러한 형태가 마치 물건을 쌓아 놓은 더미와 유사하여 '힙'이라고 불리게 되었습니다.
- 힙은 최대값 또는 최소값을 효율적으로 찾을 수 있는 자료구조입니다. 이러한 특성 덕분에 우선순위 큐와 같은 다양한 알고리즘에서 활용됩니다.
힙 정렬은 이러한 힙의 특성을 이용하여 데이터를 정렬하는 알고리즘입니다. 힙 정렬은 다음과 같은 과정으로 이루어집니다.
- 힙 생성: 정렬할 데이터를 힙으로 구성합니다.
- 힙에서 최대값(또는 최소값) 추출: 힙의 루트 노드에 있는 최대값(또는 최소값)을 추출하여 정렬된 배열의 뒤쪽으로 이동시킵니다.
- 힙 재구성: 추출된 노드를 제외하고 남은 노드들로 힙을 재구성합니다.
- 반복: 2번과 3번 과정을 반복하여 모든 데이터를 정렬합니다.
힙 정렬은 평균적으로 O(n log n)의 시간 복잡도를 가지며, 효율적인 정렬 알고리즘 중 하나로 알려져 있습니다.
- 비교하는 시간 n, 힙 생성하는 시간 log n
'컴퓨터 > 알고리즘' 카테고리의 다른 글
간단한 DP - 피보나치에 대하여 (0) | 2024.08.10 |
---|---|
DFS와 BFS (0) | 2024.08.01 |
[DP] Dynamic Programming 동적 프로그래밍 (0) | 2024.07.31 |
Dynamic Programming (0) | 2024.06.12 |
동적 프로그래밍 DP (0) | 2024.05.30 |