时间复杂度 空间复杂度
时间复杂度用 T(n) 表示。T(n)=O(f(n))
T(n):时间复杂度,描述 指定 n 此需要的时间,比如 T(n)=2n +3,T(n)=logn + 2
在N趋于 无穷大的时候, 去掉一些影响比较小的因数。
-
如果运行时间是常数量级,用常数1表示;
-
只保留时间函数中的最高阶项;
-
如果最高阶项存在,则省去最高阶项前面的系数
然后得到 T(n)=O( n),T(n)=O(logn)
常见的时间复杂度。
1 常量 O(1) 比如 hash查找
2 对数 O(log n) 比如二分查找,树形查找
3 线性复杂度 O(n) 比如数组的遍历
4 指数 O(n^2),O(n^3) 等等 比如 通过遍历方式写了一个 循环在 控制台打印 长宽都是n的正方形 ( n 可能很大额度时候 ,程序几乎不可能接受 O(n^2) 或者以上的 复杂度 , O(n) 已经是极限 )
值得一提的是 数据库 普通查找 是 O(n)的,带有 索引的查询 可能 是 O(1) ,O(log n) 看使用的 索引的等级,和索引的 类型
最后说一句在N只有那个几个,几十个的时候,时间复杂的意义不大。
。比如redis 里面遍历 scan Hash 集合的时候是 O(1) 的,但是 我们拿到 游标循环 取出 值是 O(n) 的。
对应的 还有空间复杂度 S(n)=O(f(n)),表示占用内存空间的大小,一般 时空不可兼得,我们 都会 选择 空间换时间,而且空间资源的代价不高。
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2019-07-06 20:57 zhangyukun 阅读(116) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步