对
x
1
,
…
,
x
n
x_1,\dots,x_n
x1,…,xn进行快速排序
partition node:
x
[
k
]
x[k]
x[k]为随机划分元
x
[
k
]
x[k]
x[k] 被选择的概率为
1
/
n
1/n
1/n,令
C
n
C_n
Cn 为规模为n的问题的比较次数(即
T
(
n
)
T(n)
T(n) )
C
n
=
(
n
−
1
)
+
1
n
∑
k
=
1
n
(
C
k
−
1
+
C
n
−
k
)
=
(
n
−
1
)
+
1
n
∑
k
=
1
n
C
k
−
1
+
1
n
∑
k
=
1
n
C
n
−
k
=
(
n
−
1
)
+
1
n
∑
k
=
0
n
−
1
C
k
+
1
n
∑
k
=
0
n
−
1
C
k
=
(
n
−
1
)
+
2
n
∑
k
=
0
n
−
1
C
k
Cn=(n−1)+1nn∑k=1(Ck−1+Cn−k)=(n−1)+1nn∑k=1Ck−1+1nn∑k=1Cn−k=(n−1)+1nn−1∑k=0Ck+1nn−1∑k=0Ck=(n−1)+2nn−1∑k=0Ck
因此
n
C
n
=
n
(
n
−
1
)
+
2
∑
k
=
0
n
−
1
C
k
①
nC_n=n(n-1)+2\sum_{k=0}^{n-1}C_k\quad ①
nCn=n(n−1)+2k=0∑n−1Ck①
用
n
−
1
n-1
n−1 代入
n
n
n,得
(
n
−
1
)
C
n
−
1
=
(
n
−
1
)
(
n
−
2
)
+
2
∑
k
=
0
n
−
2
C
k
②
(n-1)C_{n-1}=(n-1)(n-2)+2\sum_{k=0}^{n-2}C_k\quad②
(n−1)Cn−1=(n−1)(n−2)+2k=0∑n−2Ck②
①
−
②
①-②
①−② 得
n
C
n
−
(
n
−
1
)
C
n
−
1
=
2
(
n
−
1
)
+
2
C
n
−
1
⇒
n
C
n
=
2
(
n
−
1
)
+
(
n
+
1
)
C
n
−
1
③
⇒
C
n
n
+
1
=
C
n
−
1
n
+
2
(
n
−
1
)
n
(
n
+
1
)
nCn−(n−1)Cn−1=2(n−1)+2Cn−1⇒nCn=2(n−1)+(n+1)Cn−1③⇒Cnn+1=Cn−1n+2(n−1)n(n+1)
令
D
n
=
C
n
n
+
1
D_n=\frac{C_n}{n+1}
Dn=n+1Cn 得
D
n
=
D
n
−
1
+
2
(
n
−
1
)
n
(
n
+
1
)
④
D_n=D_{n-1}+\frac{2(n-1)}{n(n+1)}\quad④
Dn=Dn−1+n(n+1)2(n−1)④
因此
D
n
=
2
∑
j
=
1
n
j
−
1
j
(
j
+
1
)
=
2
∑
j
=
1
n
2
j
+
1
−
2
∑
j
=
1
n
1
j
=
4
∑
j
=
2
n
+
1
1
j
−
2
∑
j
=
1
n
1
j
=
2
∑
j
=
1
n
1
j
+
4
n
+
1
−
4
=
2
H
n
−
4
n
n
+
1
≈
2
ln
n
+
O
(
1
)
=
2
log
2
e
log
2
n
+
O
(
1
)
≈
1.44
log
2
n
Dn=2n∑j=1j−1j(j+1)=2n∑j=12j+1−2n∑j=11j=4n+1∑j=21j−2n∑j=11j=2n∑j=11j+4n+1−4=2Hn−4nn+1≈2lnn+O(1)=2log2elog2n+O(1)≈1.44log2n
因此
C
n
≈
1.44
n
log
2
n
=
O
(
n
log
n
)
C_n\approx1.44n\log_2 n=O(n\log n)
Cn≈1.44nlog2n=O(nlogn)