1.算法的时间复杂度主要有以下几种
1.1 0(1)
指的是常数时间内的算法。例如:
int i = 8;
int j = 6;
int sum = i + j;
执行一次或者常数时间次数的代码,时间复杂度都是0(1)
1.2 0(log n) 0(n log n)
示例代码:
i=1;
while (i <= n) {
i = i * 2;
}
上述代码的时间复杂度为 o(log n) 这类的时间复杂度不太容易获取。
但是可以通过 将操作次数作为参数来 ,计算出 操作次数的方式来的计算
1.3 O(m+n)、O(m*n)
一般为有两个不定参数,且两个不定参数都不能确定其大小
int cal(int m, int n) {
int sum_1 = 0;
int i = 1;
for (; i < m; ++i) {
sum_1 = sum_1 + i;
}
int sum_2 = 0;
int j = 1;
for (; j < n; ++j) {
sum_2 = sum_2 + j;
}
return sum_1 + sum_2;
}
1.4 O(n2)
其实 O(n2) 可以理解为 O(m*n) 都是不定参数
1.5 O(2^n)
i=1;
while (i <= 2^n) {
i ++;
}
1.6 O(n!)
i=1;
while (i <= n!) {
i ++;
}