时间复杂度和空间复杂度是检验一种算法的好坏程度标准。
时间复杂度:算法运行的步骤(不是时间).
空间复杂度:算法运行需要占用的内存大小.
时间复杂度
表示法
“大O记法”(必须是大写字母O)来表示时间复杂度:T(n) = O(f(n))
n是影响复杂度变化的因素,f(n)是复杂度具体的算法。把复杂性或运行时间表达为n的函数。
常见的时间复杂度量级(从小到大)
- 常数阶O(1)
- 线性阶O(n)
- 对数阶O(logN)
- 线性对数阶O(nlogN)
- 平方阶O(n²)
- 立方阶O(n³)
- K次方阶O(n^k)
- 指数阶O(2^n)
- 阶乘阶O(n!)
时间复杂度简化
简化的过程分为三步 :
· 去掉运行时间中的所有加法常数。(例如 n²+n+1,直接变为 n²+n)
· 只保留最高项。(n²+n 变成 n²)
· 如果最高项存在但是系数不是1,去掉系数。(n² 系数为 1)
故一个表达式为n²+n+1的时间复杂度为O(n²)