数据结构之排序七:归并排序

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) 

稳定性:稳定

原文地址:https://www.cnblogs.com/mengxiangtiankongfenwailan/p/11341241.html