看算法时看到原地归并和非原地归并,不是很懂两者的区别,故记录如下:
原地算法(in-place algorithm)基本上不需要 额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法。当算法运行时,输入的数据通常会被要输出的部分覆盖掉。——Wiki
这里不得不吐槽下百度百科,和Wiki一比,用词真的是不准确啊,给人一种原地排序就是不需要任何存储空间的感觉。
原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。——百度
那么我们来看下两种算法的代码:
非原地
class Sort:
def __init__(self):
self.count = 0 # 用于计数mergeSort的执行次数
def