程序的时间复杂度经常会用大O符号表示法,即T(n) = O(f(n))
其中n 表示数据量 ,O(f(n))表示执行的指令数跟f(n)成正比
经常用到的几个时间复杂度:
- 常数阶O(1),即不会因为量的增加,而增加复杂度
- 线性阶O(n),比如for循环就是一个典型的O(n),会执行n遍
- 平方阶O(n²),比如双重for循环,即把 O(n) 的代码再嵌套循环一遍,它的时间复杂度就是 O(n²) 了
- 对数阶O(logn),比如二分查找算法就是O(logn),会2 倍的缩减查找范围,只需 log2^n 次即可跳出循环
- 线性对数阶O(nlogn),即将O(logn)的循环n遍
log对数函数
一般地,对数函数是以幂(真数)为自变量,指数为因变量,底数为常量的函数。如果ax =N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数