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