def merge_sort(m):
if len(m) <= 1:
return m
# 1. divide 부분
mid = len(m) // 2
left = m[:mid]
right = m[mid:]
def merge(left, right):
result = []
while len(left) > 0 and len(right) > 0:
if left[0] <= right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
if len(left) > 0:
result.extend(left)
if len(right) > 0:
result.extend(right)
return result