热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

算法的空间复杂度是指什么?怎么理解的?

zhiliaoadmin
2022-11-03 17:44:59
0

算法的空间复杂度是指什么?要说空间复杂度,那么我们还要结合时间复杂度和算法一起来看。算法是一个很枯燥很头痛的知识,相信学过的人都有这方面的感受,但是要想做开发,算法是再痛苦都要学的一项知识。今天我们一起看看算法的空间复杂度要怎么去理解。

算法的空间复杂度是指什么

从理论层面来讲,算法就是我们写程序写代码的优化手册,它教会我们怎么让代码运行起来更快,或者占用的内存空间更少。直观层面来讲便是,算法是一系列程序指令,用于处理特定的运算和逻辑问题。一个算法是好是坏,我们通常根据时间复杂度和空间复杂度去评价。

时间复杂度是对一个算法运行时间长短的量度,用大 O 表示。时间复杂度就是我们对自己代码的“理论分析”。从我们个人编程的角度而言,我们的代码仅用于个人电脑使用,并不参与企业开发,所以我们一般不去考虑计算机的性能。单纯的考虑了,怎么写这段代码,它不会出错,可以正确执行。在进行数据结构和算法的学习之后,我们慢慢的开始考虑自己代码的时间复杂度。即如何让自己写的代码运行速度的更快一些。

空间复杂度便是我们对自己代码的“实际分析”。可能我们个人写代码体会不到空间复杂度的重要性。假设你在大型企业上班,你的老板要求你开发一个手机应用,这个时候,我们要考虑的就不仅仅是,我写的代码能不能正常运行起来这件事了,因为你要站在用户的角度去考虑,你的体验度是怎么样的,作为手机应用的使用者,我们自然会想到,我希望这个手机应用能够秒开,而不是点进去半天才能加载出来,同时也希望这个手机应用占手机的内存少一点。而作为老板,让员工开发应用的时候,也希望公司提供的电脑能安全完成开发,不希望出现因为代码运行时间过长而消耗电脑硬件,导致电脑坏掉拖延项目进展的事情发生。

空间复杂度有着类似于时间复杂度的概念:一个算法或程序的空间复杂度定性地描述该算法或程序运行所需要的存储空间大小。空间复杂度是相应计算问题的输入值的长度的函数,它表示一个算法完全执行所需要的存储空间大小。

算法的空间复杂度是指什么

从整个程序来讨论的话,程序的空间复杂度可以完全用程序代码本身所占用的存储空间多少来表示。

首先,程序自身所占用的存储空间取决于其包含的代码量,我们只要在编程环境下输入代码进行运行,那么这段代码必定会占用电脑的存储空间。想要压缩这部分存储空间,就要求我们在实现功能的同时,尽可能编写足够短的代码,但从这一方面来讲,过于庞大,毕竟我们编写一段代码,其中包含着很多内容,我们将继续将代码拆分分析为以下两种情况去推算空间复杂度。

一般一段代码的空间复杂度涉及到的空间类型有:

1…输入、输出空间。程序中如果需要输入输出数据,也会占用一定的存储空间。程序运行过程中输入输出的数据,往往由要解决的问题而定,即便所用算法不同,程序输入输出所占用的存储空间也是相近的。即,无论是我们使用 10 行代码还是三行代码去实现同一个问题,他们最终输出的东西一样的话,即使二者代码长度不尽相同,但是输出所占的存储空间是差不多大的。

2…暂存空间。程序在运行过程中,可能还需要临时申请更多的存储空间。事实上,对算法的空间复杂度影响最大的,往往是程序运行过程中所申请的临时存储空间。不同的算法所编写出的程序,其运行时申请的临时存储空间通常会有较大不同。

通常情况下,空间复杂度指在输入数据大小为 N 时,算法运行所使用的「暂存空间」+「输出空间」的总体大小。



大家都在看

网络安全原来有这么多大厂,码住!

2022-11-03 浏览次数:0

前端面试小知识,什么是jsonp?

2022-11-03 浏览次数:0

java编程需要什么软件?敲代码之前的准备

2022-11-03 浏览次数:0

鸿蒙开发前景如何?汇智知了堂为您解答并引领您掌握...

2022-11-03 浏览次数:0

知了堂课程实训、就业系列讲座走进高校

2022-11-03 浏览次数:0

网络安全培训班一般都学些什么?自学可以学会吗?

2022-11-03 浏览次数:0
最新资讯
算法的空间复杂度是指什么?怎么... 算法的空间复杂度是指什么?算法是一个很枯燥很头痛的知识,相信学过的人都有这方面的感受,但是要想做开发...