算法的时间复杂度

如果一个算法的执行次数是 T(n),那么只保留最高次项,同时忽略最高项的系数后得到函数 f(n),此时算法的时间复杂度就是 O(f(n))。为了方便描述,下文称此为 大O推导法。

 

1.对于一个循环,假设循环体的时间复杂度为 O(n),循环次数为 m,则这个
循环的时间复杂度为 O(n×m)。

此时时间复杂度为 O(n × 1),即 O(n)。

 

2.对于多个循环,假设循环体的时间复杂度为 O(n),各个循环的循环次数分别是a, b, c...,则这个循环的时间复杂度为 O(n×a×b×c...)。分析的时候应该由里向外分析这些循环。

此时时间复杂度为 O(n × n × 1),即 O(n^2)。

 

 3.对于顺序执行的语句或者算法,总的时间复杂度等于其中最大的时间复杂度

此时时间复杂度为 max(O(n^2), O(n)),即 O(n^2)。

 

4.对于条件判断语句,总的时间复杂度等于其中 时间复杂度最大的路径 的时间复杂度。

此时时间复杂度为 max(O(n^2), O(n)),即 O(n^2)。

 

时间复杂度分析的基本策略是:从内向外分析,从最深层开始分析。如果遇到函数调用,要深入函数进行分析。

 

posted @ 2018-12-29 16:57  竹引  阅读(619)  评论(0编辑  收藏  举报