衡量算法的好坏,在时间上可以采用时间复杂度【时间效率】;空间上有空间复杂度【空间效率】。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需的额外空间。
1、时间复杂度
为一个数学函数,定量描述了算法的运行时间。
一个算法所花费的时间与其中语句的执行次数成正比。算法中的基本操作的执行次数为算法的时间复杂度。
1-1 大O渐进表示法
不是一种得到精确执行次数的算法,而是大概的执行次数。
方法:用1取代运行时间中的所有加法常数;再修改后的运行次数中,只保留最高阶项;如果最高阶项存在且不是1,则去掉该项的常数系数。最终得到的结果就是大O阶。
1-2 举例
(1)
(2)
(3)
(4)
(5)
(6)
2、空间复杂度
空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。
(1)
(2)