时间复杂度 空间复杂度

时间复杂度用 T(n) 表示。T(n)=O(f(n))

 

T(n):时间复杂度,描述 指定 n 此需要的时间,比如  T(n)=2n +3,T(n)=logn + 2

在N趋于 无穷大的时候, 去掉一些影响比较小的因数。

  1. 如果运行时间是常数量级,用常数1表示;

  2. 只保留时间函数中的最高阶项;

  3. 如果最高阶项存在,则省去最高阶项前面的系数

然后得到 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  阅读(113)  评论(0编辑  收藏  举报

导航