发布网友 发布时间:2022-03-25 15:40
共8个回答
懂视网 时间:2022-03-25 20:01
在开发中,可能有多种算法能实现同样一个业务功能。当对软件运行效率等有严格要求时,我们就要对多个算法的执行效率和内存占用进行分析。这种分析就是算法的复杂度分析,具体可分为时间复杂度和空间复杂度的分析。掌握了复杂度分析是写出优秀算法的前提。
算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。应用于数学和计算机导论。同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。杂度分析编辑
通常一个算法的复杂度是由其输入量决定的,随着输入的增加,算法复杂度递增。不同算法的复杂度增长速度不同。为了降低算法复杂度,应当同时考虑到输入量,设计较好的算法。
热心网友 时间:2022-03-25 17:09
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。
而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。
类似于 时间复杂度的讨论,一个算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。
一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。
分析
分析一个算法所占用的存储空间要从各方面综合考虑。如对于递归算法来说,一般都比较简短,算法本身所占用的存储空间较少,但运行时需要一个附加堆栈,从而占用较多的临时工作单元;
若写成非递归算法,一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。
若一个算法为递归算法,其空间复杂度为递归所使用的堆栈空间的大小,它等于一次调用所分配的临时存储空间的大小乘以被调用的次数(即为递归调用的次数加1,这个1表示开始进行的一次非递归调用)。
参考资料来源:百度百科—空间复杂度
热心网友 时间:2022-03-25 18:44
简单的来说:算法的空间复杂度指的是占用内存,cpu等计算机资源的程度;具体的解释为:空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,比如直接插入排序的时间复杂度是O,空间复杂度是O。 而一般的递归算法就要有O的空间复杂度,因为每次递归都要存储返回信息。 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。热心网友 时间:2022-03-25 20:35
应该是针对于存储空间而言的,而不是运行时的内存空间热心网友 时间:2022-03-25 22:43
本题选B,但是B中描述不到位,因该是算法执行过程中所占用的存储空间,而不应形容成内存;且这个存储空间重点是执行过程中的而非算法本身占用的存储空间故A是错误的。热心网友 时间:2022-03-26 01:08
这不误人子弟吗。算法时间复杂度不用说了。定义说得很明白,空间复杂度是程序所用到的存储空间的大小程度。这里程序是抽象泛化的,空间也是泛化的,指的是算法理论上用到的所有空间,无论是内存外存(硬盘光盘这些都叫存)都是存储器,无非速度不等而已,答案就是A热心网友 时间:2022-03-26 03:49
上网查了一下,觉得这个可能帮助你解决问题算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作单元以及某种数据结构所需要的附加存储空间。 选B热心网友 时间:2022-03-26 06:47
答案没错,选A,背上就行