Mrg

SORTING

병합 정렬 (Merge Sort)

배열을 절반씩 나눠 각각 정렬한 뒤 하나로 합치는 과정을 한 단계씩, 또는 자동 재생으로 직접 확인하세요. 배열 상태와 관계없이 항상 비슷한 속도로 동작한다는 점을 다른 정렬과 비교할 수 있습니다.

재생 버튼을 눌러 정렬을 시작하세요.

비교 0회 · 기록 0회

1 / 1

속도
대기 병합 구간 비교 중 방금 기록됨 정렬 완료

PSEUDOCODE (merge 단계)

merge(array, lo, mid, hi):  i ← lo, j ← mid  while i < mid and j < hi    if array[i] ≤ array[j]      결과에 array[i] 기록, i ← i+1    else      결과에 array[j] 기록, j ← j+1  남은 값을 순서대로 이어서 기록

어떻게 동작하나요

배열을 더 이상 나눌 수 없을 때까지(원소 1개) 절반씩 재귀적으로 나눈 뒤, 이미 정렬된 두 부분을 왼쪽부터 하나씩 비교하며 더 작은 값을 순서대로 옮겨 담습니다. 항상 O(n log n)을 보장하고 안정 정렬(같은 값의 순서 유지)이라는 장점이 있는 대신, 병합 과정에 원본과 같은 크기의 추가 공간이 필요하다는 트레이드오프가 있습니다.

시간·공간 복잡도

최선
O(n log n)
평균
O(n log n)
최악
O(n log n)
공간 복잡도
O(n)
안정 정렬
예 (Stable)

프리셋을 바꿔가며 비교·기록 횟수를 확인해보세요 — 버블·선택·삽입 정렬과 달리 배열 상태와 거의 무관하게 항상 O(n log n)입니다. 대신 O(1)이 아닌 O(n) 추가 공간이 필요합니다.

다른 정렬 알고리즘(버블·선택·삽입·퀵)도 함께 시각화되어 있습니다 — Algorithm 코스로 돌아가기

1:1 정원제 · 상시 모집

정렬, 시간복잡도를 손으로 체감하며 다시 배우세요

당신에게 맞는 커리큘럼은 1:1 상담에서부터 시작됩니다.