프로그래밍/알고리즘
Merge sort
YERIEL
2020. 9. 21. 08:27
Merge Sort(합병정렬)
- 문제 : n개의 키를 내림차순으로 정렬
- 입력 : 정수 n, S[1...n]
- 출력 : 내림차순으로 정렬된 키를 가지고 있는 배열 S
- 2개의 배열을 하나로 만들기
- 공간복잡도 : Θ(n)
Merge
- 2개의 배열을 하나의 배열로 만들기
- 입력 : subarray S[low...high], low, mid, high
- 출력 : S[1...high]
- 기억공간 사용하지 않음
def mergesort(S, low, high) :
if low < high :
mid = (low+high) // 2
mergesort(S, low, mid)
mergesort(S, mid + 1, high)
merge(S, low, mid, high)
def merge(S, low, mid, high) :
i = low
j = mid + 1
k = low
U = []
while i <= mid and j <= high :
if S[i] < S[j] :
U[k] = S[i]
++i
else :
U[k] = S[j]
++j
++k
if i > mid :
n = k
for num in range(j, high) :
U[n] = S[num]
++n
else :
n = k
for num in range(i, mid) :
U[n] = S[num]
for num in range(low, high) :
S[num] = U[num]