参考博客(侵删)
概念
渐进时间复杂度
一个程序的语句执行次数可以用一个代数式表示,取这个代数式的最高次项目忽略此项系数作为时间复杂度
使用范围
时间复杂度 | 稳过范围 | 极限范围 |
---|---|---|
O(1) | o o oo oo | o o oo oo |
O( x x x) | o o oo oo | o o oo oo |
O( l o g n logn logn) | o o oo oo | 2 2 2 1 e 8 ^{1e8} 1e8 |
O( n n n) | 5 e 7 5e7 5e7 | 1 e 8 1e8 1e8 |
O( n l o g n nlogn nlogn) | 5 e 5 5e5 5e5 | 1 e 6 1e6 1e6 |
O( n n n 2 ^{2} 2) | 5000 5000 5000 | 10000 10000 10000 |
O( n n n 3 ^{3} 3) | 300 300 300 | 500 500 500 |
O( 2 2 2 n ^{n} n) | 25 25 25 | 27 27 27 |
O( n ! n! n!) | 11 11 11 | 11 11 11 |
O( n n n n ^{n} n) | 8 8 8 | 8 8 8 |
符号
Master定理
内容
我们将一个规模为 n n n的问题,通过分治得到 a a a个规模为 n b \frac{n}{b} bn的子问题,每次递归带来的额外计算为 f ( n ) f(n) f(n),得到以下关系式:
定义C
c
r
i
t
_{crit}
crit
1.
2
3
第3种情况扩展
真题
1
假设某算法的计算时间表示为递推关系式
T
(
n
)
=
2
T
T(n) = 2T
T(n)=2T(
n
4
\frac{n}{4}
4n)+
n
\sqrt{n}
n,
T
(
1
)
=
1
T(1) = 1
T(1)=1
求算法复杂度(C)
A
.
A.
A.
O
(
n
)
O(n)
O(n)
B
.
B.
B.
O
O
O(
n
\sqrt{n}
n
)
)
)
C
.
C.
C.
O
O
O
(
(
(
n
\sqrt{n}
n
l
o
g
n
logn
logn
)
)
)
D
.
D.
D.O
(
(
(n
2
^{2}
2
)
)
)
2
假设某算法的计算时间表示为递推关系式
T
(
n
)
=
T
(
n
−
1
)
+
n
T(n) = T(n-1)+n
T(n)=T(n−1)+n,
T
(
0
)
=
1
T(0)=1
T(0)=1
求算法复杂度(D)
A
.
A.
A.
O
O
O
(
(
(
l
o
g
n
logn
logn
)
)
)
B
.
B.
B.
O
O
O
(
(
(
n
n
n
l
o
g
n
logn
logn
)
)
)
C
.
C.
C.
O
(
n
)
O(n)
O(n)
D
.
D.
D.O
(
(
(n
2
^{2}
2
)
)
)
3
用下面的函数计算斐波那契数列的第 n n n项,则其时间复杂度为(D)
int F(int n){
if(n <= 2) return 1;
else return F(n-1)+F(n-2);
}
A
.
A.
A.
O
(
1
)
O(1)
O(1)
B
.
B.
B.
O
(
n
)
O(n)
O(n)
C
.
C.
C.O
(
(
(n
2
^{2}
2
)
)
)
D
.
D.
D.
O
O
O(
F
F
F
n
_{n}
n
)
)
)