데이터 구조의 정렬 7: 병합 정렬

2366 단어
def merge_sort(ary):
    if len(ary) <= 1:
        return ary
    num = len(ary)//2       #     
    left = merge_sort(ary[:num])
    right = merge_sort(ary[num:])
    print('---->',ary)
    return merge(left, right)    #     


def merge(left, right):
    '''
            ,
               left[] right[]           
    '''
    l, r = 0, 0           # left right       
    result = []
    while l < len(left) and r < len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += left[l:]
    result += right[r:]
    return result

시간 복잡 도:
평균: O (nlog (n))
최 악: O (nlog (n)
가장 좋 은: O (nlog (n))
공간 복잡 도: O (n) 
안정성

좋은 웹페이지 즐겨찾기