学数据结构和算法时,时间,空间复杂性计算很重要吗?
我个人感觉,,,知道这些用处不大,,,大概了解就好,应该不会自己去算吧,,,可是书上都会先讲到这些内容,,,很繁琐...我不知道要不要学???谁可以告诉我...谢谢....
我个人感觉,,,知道这些用处不大,,,大概了解就好,应该不会自己去算吧,,,可是书上都会先讲到这些内容,,,很繁琐...我不知道要不要学???谁可以告诉我...谢谢.
展开
5个回答
展开全部
肯定要学的,因为这方面的知识有助于您对解决问题时算法的选择。虽然不一定您能够很精确的计算出某个算法的时间和空间复杂度,但是至少要能够判断哪个算法的时间或空间复杂度更优。
如果您将来打算从事算法方面的研究,或读相关方面的研究生,则这个是至关重要的,毕竟您提出的一个算法要说服别人使用,那么除了解决问题的有效性或具有某种其他算法不具有的特性或特征之外,时间和空间复杂度具有较好的说服力。
如果您仅仅只是打算从事软件行业,进行软件开发等工作,在不涉及到算法优化的情况下,您可以只是仅仅对其有所了解即可。
不过就作为一名学生来说,这方面的知识实际上并不难也很浅显,理解和掌握它其实没什么的,如果您在刚接触时觉得较难理解,不妨先记住相关概念,在学习过程中去不断加深理解。
追问
只是在学空间复杂度的时候看到实例特征蒙了...实例特征是什么额?那个还能选择实例特征的???
追答
1. 实例特征就是描述空间长度的参数。例如您申请的空间长度为n,则n即为实例特征。此时空间复杂度就是空间与实例特征的函数关系,例如O(n)表示线性关系等。您知道这是什么就可以了,实例特征的选取是有随意性的。
举个例子:例如您存储一个n*n的矩阵,您使用二维数组存储全部数据,此时您存储该矩阵的算法空间复杂度就是O(n^2),此时n就是您选取的实例特征。此时若您发现您要处理的矩阵都是稀松矩阵,只有对角线的取值不同,其他位置的值皆为0。此时您很可能用一个长度为n的一维数组存储该矩阵(只存储对角线元素)此时您算法的空间复杂度就变成O(n)了。示例特征选取的随意性是说特征的选取在相同算法下其被选取的参数可以是不同的,例如上面的示例特征选取都是与矩阵的行数相关的,因此空间复杂度是相对于参数矩阵长度的函数。假设您继续仔细研究发现该算法涉及的矩阵长度与参数m具有线性关系,您同样可以将m选择为实例特征,则此时空间复杂度可以表示为O(m)的形式。
2. 实例特征说白了就是您描述空间复杂度的参照物。例如描述矩阵存储空间时您可以选择行数作为参照物也可以选择列数作为参照物。也可以选择其它关联的参数作为参照物,只要这种参照物可以与最终的空间复杂度建立其确定的函数关系即可。
展开全部
要学而且一定要学好,甚至还要去找一些算法网站去练习。因为算法与数据结构决定一个程序员的起点。如果你校招想进国际化大公司,就多在这上面下功夫。
教科书很繁琐,你可以选择看一些国外大学的教材,或者公开课。
教科书很繁琐,你可以选择看一些国外大学的教材,或者公开课。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么会不重要呢。同样解决一个问题,如果A算法花的时间是log来计算的,B算法是n×n×n即n的三次方。当数据量很大的时候,B算法能让计算机跑死,你就慢慢等吧,而A算法早就有结果了。到大规模数据应用的时候,这种差别明显得要命。如果不重要,讲这个干什么。如果程序员没有这种基本嗅觉是不合格的。
追问
我的意思是...我感觉没必要学的那么细...一般算法花的时间差距不是挺明显的- -...而且我看那个空间计算什么实例特征我都不知道是什么,,,还能选实例特征的???
追答
现在空间复杂度都不太说了,因为内存和硬盘的价格都不算贵,只有时间复杂度还要特别注意。你说的那个什么实例特征我也搞不清楚,不会是给例子让你算吧?翻翻你的书本或者笔记,里面应该有解释的吧。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
时间空间复杂度其实就是你以后写出来的程序的运行时间和需要空间··在数据很大的时候运行时间会受影响··
你打算做这行····还是学学吧
貌似考研里经常考和排序一起
你打算做这行····还是学学吧
貌似考研里经常考和排序一起
追问
空间复杂度里的实例特征是什么额???怎么还能选实例特征的???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实例特征是程序中某一步有参考意义的语句。就是计算这一条语句的复杂度。我也觉得好难,一看到数学初等函数就头大,循环还好,递归看得我肾虚
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询