算法的一个重要任务便是找到合适的、效率最高的解决问题的方法,即最好的算法。从理论上来讲,这就需要对算法的性能有一个合理的评价。一个算法的优劣往往通过算法复杂度来衡量,算法复杂度包括时间复杂度和空间复杂度两个方面。
时间复杂度
时间复杂度即通常所说的算法执行所需要耗费的时间,时间越短,算法越好。一个算法执行的时间往往无法精确估计,通常需要在实际的计算机中运行才能够知道。但是,也可以对算法代码进行估计,而得到算法的时间复杂度。
首先,算法代码执行的时间往往和算法代码中语句执行的数量有关。由于每条语句执行都需要时间,语句执行的次数越多,整个程序所耗费的时间就越长。因此,简短、精悍的算法程序往往执行速度快。
另外,算法的时间复杂度还与问题的规模有关。
空间复杂度
空间复杂度指的是算法程序在计算机中执行所需要消耗的存储空间。空间复杂度其实可以分为如下两个方面:
- 程序保存所需要的存储空间,即程序的大小。
- 程序在执行过程中所需要消耗的存储空间资源,如程序在执行过程中的中间变量等。
一般来说,程序的大小越小,执行过程中消耗的资源越少,这个程序就越好。