힙 정렬 (Heap Sort)
배열을 Max Heap 구조로 재구성한 뒤 루트(최댓값)를 반복적으로 추출하여 정렬하는 제자리(in-place) 알고리즘입니다. 최악의 경우에도 O(n log n)이 보장됩니다.
01힙 정렬 (Heap Sort)
알고리즘 작동 원리 탐색힙 정렬을 시작합니다. 늘 가장 큰 값이 꼭대기에 오도록 배열을 최대 힙으로 만든 뒤, 그 값을 하나씩 뒤로 빼냅니다.
1단계 · 힙 만들기. 자식이 있는 마지막 노드부터 거슬러 올라가며 부모가 자식보다 크도록 정리합니다.
80은 자식 40보다 큽니다. 이 자리는 이미 조건을 만족하니 그대로 둡니다.
30은 두 자식 70·10보다 작습니다. 더 큰 자식 70과 자리를 바꿔야 합니다.
70을 위로 올리고 30을 내립니다. 내려간 자리에는 자식이 없어 여기서 멈춥니다.
꼭대기 차례입니다. 50은 두 자식 70·80보다 작으니 더 큰 80과 바꿉니다.
80이 꼭대기로 올라갑니다. 내려간 50은 새 자식 40보다 커서 더 내려갈 필요가 없습니다.
최대 힙이 완성됐습니다. 이제 꼭대기에는 전체에서 가장 큰 80이 있습니다.
2단계 · 빼내기. 꼭대기의 80을 맨 뒷자리와 맞바꿔 확정하고, 그 자리를 힙에서 떼어냅니다.
남은 값으로 다시 정리하면 70이 꼭대기로 올라옵니다. 같은 방법으로 뒤에서 두 번째 자리에 확정합니다.
다시 정리하니 50이 꼭대기입니다. 뒤에서 세 번째 자리에 내려놓습니다.
이번 꼭대기는 40입니다. 그다음 자리에 확정하고 힙을 더 줄입니다.
마지막으로 30을 확정합니다. 힙에는 이제 값 하나만 남습니다.
힙 정렬이 끝났습니다. 꼭대기의 최댓값을 뒤에서부터 채워 넣은 결과가 오름차순입니다.
02 쉽게 이해하기
For Everyone전체를 힙으로 만든 뒤 꼭대기의 최댓값을 끝으로 빼내기를 반복합니다. 추가 메모리가 거의 필요 없습니다.
데이터를 힙으로 만든 뒤 최댓값을 반복해 꺼내 뒤부터 채웁니다.
추가 메모리 없이 O(n log n)을 보장해요.
- –메모리 제약 정렬
- –우선순위 기반 처리
03 파이썬 구현 코드
힙 정렬 (Heap Sort)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.
04 자주 묻는 질문
FAQ힙 정렬 (Heap Sort)란 무엇인가요?+
배열을 Max Heap 구조로 재구성한 뒤 루트(최댓값)를 반복적으로 추출하여 정렬하는 제자리(in-place) 알고리즘입니다. 최악의 경우에도 O(n log n)이 보장됩니다.
힙 정렬 (Heap Sort)의 시간복잡도는 어떻게 되나요?+
힙 정렬 (Heap Sort)의 시간복잡도는 O(n log n) 입니다. 시각화의 단계별 진행을 따라가며 왜 이런 복잡도가 나오는지 직접 확인할 수 있습니다.
힙 정렬 (Heap Sort)은(는) 어디에 사용하나요?+
메모리 제약 정렬, 우선순위 기반 처리.
힙 정렬 (Heap Sort)를 쉽게 비유하면?+
전체를 힙으로 만든 뒤 꼭대기의 최댓값을 끝으로 빼내기를 반복합니다. 추가 메모리가 거의 필요 없습니다.
