复杂度计算
复杂度一般指时间复杂度、空间复杂度,分别表现在代码的耗时和占用内存大小。
时间复杂度:执行常数时间操作的次数,指最坏的情况下:
空间复杂度:占用的内存空间;
复杂度用big O表示又称为渐进符号,是用于描述函数渐进行为的数学符号,当代码中出现int[] arr = new int[N];时我们可以说它的空间复杂度为O(N)。不同于空间复杂度的线性阶时间复杂度的表示有多种
// O(1)int i = 1;int j = 2;int k = i + j;// O(log n)int i = 1;while(i<n){i = i * 2;}// O(n)int j = 1;for (int u = 0; u < n; u++) {j++;}// O(n log n)for(m=1; m<n; m++){i = 1;while(i<n){i = i * 2;}}// O(n^2)int j = 1;for(u=1; u<=n; u++){for(m=1; m<=n; m++){j++;}}// O(2^n) 递归实现斐波那契数列int Fibonacci(int number){if (number <= 1) {return number;}return Fibonacci(number - 2) + Fibonacci(number - 1);}
O(n!)的经典问题旅行商问题复杂度为O((n-1)!/2)
复杂度速查
英文原文 https://www.bigocheatsheet.com/
中文转载
https://liam.page/2016/06/20/big-O-cheat-sheet/
https://www.cnblogs.com/lazyegg/p/12572421.html






