一个算法花费的时间理论上要经过测试才能得出,通过计算不能得出时间的复杂性,但我们知道一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。
例如:
可以看出两个算法的计算量不同:
fact1函数包含了二重循环。fact2只包含和一重循环。可以看出在相同的硬软件环境下,前者花费的运行时间比后者多,也就是说后者的时间性能比前者好
当N=5时分别计算fact1 和fact2 中乘法,加法,赋值语句的执行次数
计算过程: fact1
fact2
可得结论:
fact1中算法执行次数:15+5+26=46次
fact2中算法执行次数:5+5+12=22次
fact2的运行时间小于fact1的运行时间