汉诺塔递归的空间复杂度_算法分析中的空间复杂度,你真的会了么?

本文介绍了空间复杂度的概念,强调它关注的是程序运行时内存大小而非可执行文件的大小。文章通过举例说明了O(1)、O(n)的空间复杂度,并指出递归情况下可能出现O(logn)的空间复杂度,特别是以汉诺塔递归为例进行讨论,预告将有专门的文章解析递归的空间复杂度计算。
摘要由CSDN通过智能技术生成

笔者介绍:先后在腾讯和百度采坑,个人公众号:「代码随想录」,分享自己对互联网以及技术的想法与思考。欢迎关注!

什么是空间复杂度呢?

一个程序的空间复杂度是指运行完一个算法所需内存的大小。

空间复杂度(Space Complexity)记作S(n) 依然使用大O来表示

利用程序的空间复杂度,可以对程序运行时所需要多少内存有个预先估计。

我这里来回答两个常见的相关问题

空间复杂度是考虑程序(可执行文件)的大小么?

很多同学都会混淆 程序运行时内存大小和程序本身的大小。

这里我要强调一下空间复杂度是考虑程序运行时占用内存的大小,而不是可执行文件的大小。

空间复杂度是准确算出程序运行时所占用的内存么?

同学们不要以为空间复杂度就已经精准的掌握了程序的内存使用大小

很有多因素会印象程序真正内存使用大小

例如编译器的内存对齐,编程语言容器的底层实现等等这些都会影响到程序内存的开销。

所以空间复杂度是预先大体评估程序内存使用的大小。

说到空间复杂度,我想同学们在leetcode上应该遇到过这种错误,就是超出内存限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值