码迷,mamicode.com
首页 > 其他好文 > 详细

关于时间复杂度与空间复杂度总结

时间:2018-11-25 20:29:40      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:span   操作   输出   赋值语句   元素   需要   方便   输入输出   color   

简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间。

 

一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。

1.对于简单的输入输出语句或赋值语句(无循环语句),近似认为需要 O(1)。一般来说,只要算法中不存在循环语句,其时间复杂度就是 O(1)。

2.对于顺序结构,需要依次执行一系列语句所用时间可采用 "求和法则"。

3.对于判断条件语句来说,一般是求它的最差时间复杂度。

4.对于循环语句来说,只考虑循环体中语句的执行次数。当有若干个循环语句,则复杂度由最深层的循环内的基本语句的频度f(n)决定的。

5.对数时间复杂度:当每次操作都能将所需要检测的元素减少一半时(即每次操作,未检测元素减少一半),这样的时间复杂度为 O(logn)。

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

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

8.O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < { O(2^n) < O(n!) < O(n^n) }
最后三项用大括号把他们括起来是想要告诉大家,如果日后大家设计的算法推导出的“大O阶”是大括号中的这几位,那么趁早放弃这个算法,在去研究新的算法出来吧。因为大括号中的这几位即便是在 n 的规模比较小的情况下仍然要耗费大量的时间,算法的时间复杂度大的离谱,基本上就是“不可用状态”。

9.空间复杂度为1时,表示这个变量与问题规模n大小无关。

 

关于时间复杂度与空间复杂度总结

标签:span   操作   输出   赋值语句   元素   需要   方便   输入输出   color   

原文地址:https://www.cnblogs.com/lryepoch/p/10016135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!