算法–Big O Nonation
O(1): Constant Complexity: Constant 常数复杂度
O(log n): Logarithmic Complexity: 对数复杂度
O(n): Linear Complexity: 线性时间复杂度
O(n^2): N square Complexity 平方
O(n^3): N square Complexity 立方
O(2^n): Exponential Growth 指数
O(n!): Factorial 阶乘
O(1) :指一次运算(常数型运算)
int n = 1000;
System.out.println(n);
O(log(n)): 如果n=10的话,那么需要运算四次
for (int i=1;i<=n;i=i*2){
System.out.println(i);
}
O(n): 指n次运算
for (int i=1;i<=n;i++){
System.out.println(i);
}
O(k^n): 如果n=10的话,那么运算1024次
for (int i=1;i<=Math.pow(2,n);i++){
System.out.println(i);
}
O(n^2): 指n的2次方次运算,如果n=10的话,也就是要运算100次
for (int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
System.out.println(i+"+"+j);
}
}
O(n!): 如果i=10的话,那么需要运算 3628800次
for (int i=1;i<=factorial(n);i++){
System.out.println(i);
}
求1–100的和
一种方式是硬循环
或者
int i=0;
int sum =0;
for(int i=0;i<=100;i++){
sum+=i;
}
System.out.println(sum);
一种是求和公式
int i=0;
i=100*(100+1)/2
这样就可以看到常规的和优化的都可以算出100的所有整数和是多少,但是第一种需要算100次,而第二种的话就只需要算1次。性能上不言而喻了。
递归算法
Fib算法是指数级的也就是2的n次方次运算。
其它的算法的效率对比
以上是一点小的理论知识仅供参考。
平时练习时可以在leetCode上练习。