标签:复杂度 存储空间 sys 二分 程序 strong 便宜 根据 就是
1. 常见的时间复杂度和空间复杂度有哪些?O(1): constant complexity: constant 常数复杂度
O(log n): 对数复杂度
O(n): 线性时间复杂度
O(n^2): 平方
O(N^3): 立方
O(2^n): 指数
O(n!): 阶乘
随着现在存储空间的便宜, 很多情况下, 我们是愿意用空间复杂度来换取时间复杂度的, 因为内存, 磁盘等这些和程序算法比起来, 真的是太便宜的, 大家都是可以接收到的, 而写出好的程序, 这个真的是需要工夫的。
总的一点就是, 人工太贵了, 磁盘, 内存,就不太值钱, 所以, 可能追求时间复杂度比较低的程序
1. O(1)
int n= 1000;
System.out.println("hello " + n);
2. O(n)
for(int i = 0; i<=n; i++) {
System.out.println(i);
}
3. O(n^2)
for(int i = 0; i<=n; i++) {
for(int j = 0; j<=n; j++) {
System.out.println(i+j);
}
}
4. O(log(n))
or(int i = 1; i<n; i = i*2) {
System.out.println(i);
}
5. O(k^n)
for(int i = 1; i<= Math.pow(2, n); i++) {
System.out.println(i);
}
6. O(n!)
for(int i = 1; i<=factorial(n); i++) {
System.out.println(i);
}
我们只需要根据最高位进行计算, 常数进行忽略就好了。
二分树查找: O(logn)
二叉树的遍历: O(n)
排序的查找:一维: O(logn); 二维: O(n)
快排, 规定排序 O(nlogn)
标签:复杂度 存储空间 sys 二分 程序 strong 便宜 根据 就是
原文地址:https://blog.51cto.com/14901322/2520604