数据结构之排序七:归并排序
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)
稳定性:稳定
人生很长,一秒太短,一个月不长不短刚刚好! 加油少年! ---------LeaningBD
本文来自博客园,作者:青牛梦旅行,转载请注明原文链接:https://www.cnblogs.com/mengxiangtiankongfenwailan/p/11341241.html