M
(
n
)
=
∑
i
=
0
n
∑
j
=
1
i
1
=
∑
i
=
0
n
i
=
n
(
n
+
1
)
2
∈
θ
(
n
2
)
M(n)=\sum\limits_{i=0}^{n}\sum\limits_{j=1}^{i}1=\sum\limits_{i=0}^{n}i=\frac{n(n+1)}{2}\in\theta(n^2)
M(n)=i=0∑nj=1∑i1=i=0∑ni=2n(n+1)∈θ(n2)
提前排好序,
M
(
n
)
=
∑
i
=
1
n
2
=
2
n
M(n)=\sum\limits_{i=1}^{n}2=2n
M(n)=i=1∑n2=2n
不能
3.1.8
| E X A M P L E
A | X E M P L E
A E | X M P L E
A E E | M P L X
A E E L | P M X
A E E L M | P X
A E E L M P | X
3.1.14
从第一个开始,到最后一个光盘,与它左边的每一个
1
≤
i
≤
n
1\le i\le n
1≤i≤n暗盘互换。
时间复杂度为
∑
i
=
1
n
i
=
n
(
n
+
1
)
/
2
\sum_{i=1}^{n}i=n(n+1)/2
∑i=1ni=n(n+1)/2
3.2.5
5
⋅
996
=
4980
5\cdot996=4980
5⋅996=4980
1
⋅
996
=
996
1\cdot996=996
1⋅996=996
2
⋅
996
=
1992
2\cdot996=1992
2⋅996=1992
3.2.8
将所需子串的数量初始化为0。除最后一个字符外,对每个字符做如下操作。如果遇到一个A的时候,计算它后面所有B的数量,然后把这个数字加到所需子串的数量上。数目加入到所需子串的计数中。扫描结束后,返回 计数的最后一个值。时间效率为
n
+
(
n
−
1
)
+
⋅
⋅
⋅
+
2
=
n
(
n
+
1
)
/
2
−
1
∈
θ
(
n
2
)
n+(n-1)+\cdot\cdot\cdot+2=n(n+1)/2-1\in\theta(n^2)
n+(n−1)+⋅⋅⋅+2=n(n+1)/2−1∈θ(n2)
C
(
n
,
k
)
=
k
[
(
n
−
1
)
+
(
n
−
2
)
+
⋅
⋅
⋅
+
1
]
=
k
(
n
−
1
)
n
2
∈
θ
(
k
n
2
)
C(n,k)=k[(n-1)+(n-2)+\cdot\cdot\cdot+1]=\frac{k(n-1)n}{2}\in\theta(kn^2)
C(n,k)=k[(n−1)+(n−2)+⋅⋅⋅+1]=2k(n−1)n∈θ(kn2)