首先要弄明白什么是时间复杂度,大部分的书是通过语句的频度来分析算法中时间复杂度的,或者说将算法中基本操作的执行次数作为算法时间复杂度的度量,实际上,时间复杂度就是一个函数,这个函数用来计算执行基本操作的次数
事实上大同小异,一个语句的频度f(n)就是指该语句在算法中被重复执行的次数,将算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数
所以将算法的时间复杂度记为(一般用大O表示法):
T(n)=O(f(n)),此处O的含义即为T(n)的数量级,因为求基本操作次数就是解函数f(n),然后取其中增长最快的项(系数要变为1)作为时间复杂度的度量
时间复杂度分为三种情况:
- 最坏时间复杂度
- 平均时间复杂度:指所有输入实例在等概率出现的情况下,算法的期望运行时间
- 最好时间复杂度
时间复杂度规则:
- 加法规则:
T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)) - 除法规则:
T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))
部分时间复杂度举例:
- O(1)
Ο(1)