Merge sort는 보장된 O(n log n) 시간에 동작하는 분할 정복 방식의 안정 정렬입니다. 배열을 절반으로 나누고, 각 절반을 재귀적으로 정렬한 뒤, 정렬된 두 절반을 병합합니다.
개념
원소 하나는 이미 정렬된 상태입니다(base case). 정렬된 두 리스트를 병합하는 것은 선형이며, log n개의 병합 단계가 있습니다.
예시
python
():
(arr) <= :
arr
mid = (arr) //
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
merge(left, right)
():
result, i, j = [], ,
i < (a) j < (b):
a[i] <= b[j]:
result.append(a[i]); i +=
:
result.append(b[j]); j +=
result.extend(a[i:]); result.extend(b[j:])
result
merge_sort([, , , , ])
