O(1) 常数复杂度 无论代码有多少行,只执行一遍。可是没有O(2)或者O(3)。常数复杂度都用O(1)表示java
O(n) 线性时间复杂度 例:一层循环算法
O(n^3) 立方 例:三层循环code
O(2^n) 指数 例:数学
int fib(int n) { if (n <= 2) return n; return fib(n - 1) + fib(n - 2); }
for (int i = 1; i < n; i = i * 2) { System.out.println("Hey - I'm busy looking at: " + i); }
这个O是什么意思?class
渐进符号,O 表明渐近上界。另还有 渐近下界,渐近同阶,渐近低阶。之因此咱们用O,也就是渐近上界。即咱们通常都说一个算法的时间复杂度的上界。循环
O(log n) 这个对数为何没有底数?im
其实这个事,不用关注。直接的理解能够回想一下高中学的对数的图像,无论底数是几,差距并不明显。固然也能够经过数学证实来讲明。这里就不说了。img