一般用大O表示法来描述复杂度,它表示的是数据规模n对应的复杂度
忽略常数,系数,低阶
示例:
9 >> O(1)
2n+3 >> O(n)
n^2 + 2n + 6 >> O(n^2) 低阶的直接忽略
n^3 + 3n + 9 + 3 >> O(n^3)
对数阶的细节:
log2n=log29 * log9n 中间常数项被忽略
所以log2n,log9n统称为logn
在算法中如果发生
logn+nlogn则为
其实就是 logn + n
O(nlogn)
总结:
执行次数 复杂度 非正式术语
12 O(1) 常数阶
2n+3 O(n) 线性阶
4n^2 + 2n + 6 O(n^2) 平方阶
4log2n + 25 O(logn) 对数阶
3n+2nlog3n+15 O(nlogn) nlogn阶
4n3+3n2+22n+100 O(n^3) 立方阶
2^n O(2^n) 指数阶
补充:如果是方法形参两个 比如n和k
public static int Test(int n,int k) {
for (int i = 0; i < 5; i++) {
System.out.print();
}
for (int k = 0; k < 5; k++) {
System.out.print();
}
}
此时表示为:O(n+k)
大O表示法指令执行速度
快>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>慢
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
可以借助函数生成工具比较复杂度大小
https://zh.numberempire.com/graphingcalculator.php