当我们在利用算法实现解决某一个问题时,如果这个算法是正确的,那么通常要去思考这个算法需要的时间和空间资源是多少的问题,如果一个算法需要的时间很长,那么这种算法实际上就很难有用处,同样的如果一个需要很大内存的算法在实际中也是不能使用的。
一、什么是好的算法?
这里我们要明确一点:好的算法 和 更优的算法 不能混为一谈;一个更优的算法消耗更少的时间、更少的空间,而我们作为初学者,应该更多的去考虑怎么写出一个好的算法,而所谓好的算法要满足这两个性质:
- 1、准确性(任何情况下能彻底解决这个问题)需要对真实数据的大量测试;
- 2、健壮性 编写的程序在任何情况下都不能崩溃 也要大量测试;
不过事实上我们并没有那么多的数据量,并且用大量数据去测试是一个很烧钱的事情,我们现阶段能做到的,就是再给定的条件下,尽肯能多的解决问题的每一种情况,只有当我们写的程序能够保证解决给定的问题之后,我们会才要去考虑程序的效率;
二、什么是效率?
我们说了,一个更优的算法就是在好的算法的之上提高了效率:我们习惯用时间复杂度和空间复杂度来描述这个“效率”;而所谓时间复杂度就是一个程序运行时间;空间复杂度就是程序占用的内存大小;
三、关于复杂度
关于复杂度的分析,我们可以从理论上和实际来分析;从实际上分析就需要大量的数据去测试,对于现在的我们来说,更需要掌握的是从理论上来分析,也就是事前评估法:不需要数据又能大概的评估出时间复杂度和空间复杂度:

本文探讨了如何分析算法的效率,强调了好算法的准确性和健壮性。时间复杂度和空间复杂度是衡量效率的关键,其中时间复杂度关注程序运行时间,空间复杂度关注占用的内存。通过大O法可以估算算法的时间性能,分析复杂度时重点关注循环、顺序、选择结构的基本语句。在实际应用中,通常更关注时间复杂度而非空间复杂度。
最低0.47元/天 解锁文章
3406





