← 문제 목록
고급
자료구조
100P
힙 정렬의 시간 복잡도는?
힙 정렬은 특정 데이터 집합에 대한 정렬 알고리즘으로, 완전 이진 트리를 기반으로 합니다. 이 알고리즘은 데이터가 주어졌을 때, 이를 힙 구조로 변환한 후, 정렬된 결과를 생성합니다. 힙 정렬의 복잡성은 주로 힙을 구성하는 과정과 정렬하는 과정에서 결정됩니다. 아래 코드는 힙 정렬의 기본 구현을 보여줍니다.
위 코드를 참고하여, 힙 정렬의 전체 시간 복잡도는 어떻게 되는지 선택지에서 고르세요.
위 코드를 참고하여, 힙 정렬의 전체 시간 복잡도는 어떻게 되는지 선택지에서 고르세요.
PYTHON
def heapify(arr, n, i):
largest = i # 가장 큰 노드
left = 2 * i + 1 # 왼쪽 자식
right = 2 * i + 2 # 오른쪽 자식
if left < n and arr[largest] < arr[left]:
largest = left
if right < n and arr[largest] < arr[right]:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i] # 스왑
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
# 힙 구성
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
# 정렬
for i in range(n - 1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # 스왑
heapify(arr, i, 0)
1명 풀이 · 정답률 0%