原地归并与非原地归并

本文探讨了原地归并和非原地归并的区别,重点介绍了两者在空间复杂度上的差异。原地算法主要特点是不需额外空间,而归并排序的原地版本通过辅助数组覆盖原数组实现。非原地归并则每次返回新数组,空间复杂度相对较高。
摘要由CSDN通过智能技术生成

看算法时看到原地归并和非原地归并,不是很懂两者的区别,故记录如下:

原地算法(in-place algorithm)基本上不需要 额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法。当算法运行时,输入的数据通常会被要输出的部分覆盖掉。——Wiki

这里不得不吐槽下百度百科,和Wiki一比,用词真的是不准确啊,给人一种原地排序就是不需要任何存储空间的感觉。

原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。——百度

那么我们来看下两种算法的代码:

非原地

class Sort:
    def __init__(self):
        self.count = 0 # 用于计数mergeSort的执行次数

    def 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值