merge-sortquick-sortsorting

Merge Sort와 Quick Sort를 비교해 주세요

면접 출제
예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

Quick sort 최악 케이스를 어떻게 줄이나요?

부가 설명

Merge sort는 배열을 절반으로 나누고 각각을 정렬한 뒤 병합합니다. 병합 과정에서 임시 배열이 필요하므로 O(n) 추가 공간을 씁니다. 같은 값의 원소 순서가 유지되어 stable합니다. 최선, 평균, 최악 모두 O(n log n)입니다.

Quick sort는 pivot을 골라 작은 값은 왼쪽, 큰 값은 오른쪽으로 분리한 뒤 재귀합니다. 제자리에서 동작해 추가 메모리가 거의 없습니다. 평균은 O(n log n)이지만 pivot이 항상 최솟값이나 최댓값으로 선택되면 O(n²)입니다. Randomized quick sort나 median-of-three로 최악 케이스를 완화합니다.

실제로는 cache locality 덕분에 quick sort가 merge sort보다 빠른 경우가 많습니다. 메모리에 연속 배치된 원소를 제자리에서 교환하므로 캐시 적중률이 높습니다. Merge sort는 외부 정렬이나 linked list 정렬처럼 랜덤 접근 비용이 큰 상황에 유리합니다.

한 줄 정리

Merge sort는 안정성과 최악 보장, quick sort는 실제 속도와 공간 효율을 우선할 때 선택하며, 표준 라이브러리는 두 방식을 조합합니다.