文章目录
1. 递归的时间复杂度
master公式
T
(
N
)
=
a
∗
T
(
N
/
b
)
+
O
(
N
d
)
i
f
(
l
o
g
b
a
>
d
)
O
(
N
l
o
g
b
a
)
i
f
(
l
o
g
b
a
=
=
d
)
O
(
N
d
∗
l
o
g
2
N
)
i
f
(
l
o
g
b
a
<
d
)
O
(
N
d
)
T(N)=a*T(N/b)+O(N^d)\\ if(log_b^a > d)O(N^{log_b^a})\\ if(log_b^a==d)O(N^d*{log_2^N})\\ if(log_b^a<d) O(N^d)\\
T(N)=a∗T(N/b)+O(Nd)if(logba>d)O(Nlogba)if(logba==d)O(Nd∗log2N)if(logba<d)O(Nd)
b是把样本分为几份,a是这个递归发生了几次,除了递归外其它的操作时间复杂度为O(N^d)。例如归并排序,从中间分成两部分,所以b=2,左侧和右侧共两次执行递归,所以a=2,因为merge过程的操作时间复杂度是n,所以d=1,因此符合master公式的第二个if,所以归并的时间复杂度就是nlogn