자료 구조와 알고리즘
최악의 경우에도 시간 복잡도가 O(n log n)이고, 작업용 배열 등의 추가 기억 영역을 거의 사용하지 않고 정렬할 수 있는 정렬 방식은?
- A병합 정렬
- B힙 정렬
- C퀵 정렬
정답과 해설 보기
정답: B. 힙 정렬
힙 정렬은 배열 안에 이진 힙을 만들고, 루트의 최댓값을 맨 끝과 교환하여 힙을 줄이는 것을 반복하므로 최악에도 O(n log n)이며, 추가 영역은 상수로 충분합니다. 병합 정렬도 최악 O(n log n)이지만, 배열로 수행하려면 작업용으로 n에 비례하는 영역이 필요합니다. 퀵 정렬은 평균 O(n log n)으로 실제로는 빠르지만, 피벗의 선택 방법과 데이터에 따라서는 O(n²)이 됩니다. 덧붙여 힙 정렬은 떨어진 위치의 원소를 비교하므로 캐시 효율이 나쁘고, 안정적이지도 않습니다.
이어서 자료 구조와 알고리즘 9문제 더 풀기