패스잇
CS 기초 · 중급

퀵 정렬(Quick Sort)과 병합 정렬(Merge Sort)의 동작 원리를 비교하고, 각각 어떤 상황에서 더 효율적인지 시간 복잡도와 공간 복잡도 측면에서 설명해주세요.

힌트 · 퀵 정렬은 평균적으로 빠르지만 최악의 경우 성능 저하가 있고, 병합 정렬은 안정적이며 최악의 경우에도 일정한 성능을 보입니다.

분할 정복pivotO(n log n)O(n)최악의 경우 O(n^2)

모범답안

퀵 정렬과 병합 정렬은 모두 분할 정복 기법을 사용하는 효율적인 정렬 알고리즘입니다.

퀵 정렬은 먼저 '피벗'이라는 기준 요소를 선택하고, 배열을 피벗보다 작은 요소와 큰 요소로 분할합니다. 이 과정을 재귀적으로 반복하여 정렬합니다. 평균적으로 O(n log n)의 시간 복잡도를 가지지만, 피벗 선택이 좋지 않으면 최악의 경우 O(n^2)까지 성능이 저하될 수 있습니다. 공간 복잡도는 재귀 호출 스택 때문에 O(log n)에서 O(n) 정도입니다.

병합 정렬은 배열을 절반으로 계속 나누다가, 각 부분 배열을 정렬한 후 다시 합치는(병합) 방식으로 동작합니다. 이 병합 과정에서 정렬이 이루어집니다. 퀵 정렬과 달리 항상 O(n log n)의 시간 복잡도를 보장하며, 최악의 경우에도 성능이 일정합니다. 하지만 정렬된 두 부분 배열을 합치기 위해 추가적인 공간이 필요하므로 공간 복잡도는 O(n)입니다.

따라서 데이터가 이미 어느 정도 정렬되어 있거나 메모리 제약이 크지 않다면 퀵 정렬이 평균적으로 더 빠를 수 있습니다. 반면, 데이터의 분포를 알 수 없거나 최악의 경우에도 일정한 성능이 중요하다면 병합 정렬이 더 안정적인 선택입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 알고리즘 면접 질문

← 알고리즘 면접 질문 전체 보기