考虑RANDOMIZED-QUICKSORT操作在n个互不相同的输入数据的序列上。证明:对于任何常数k>0,n!种输入排列除了其中 种之外,运行时间都为
种之外,运行时间都为 。
。
Consider RANDOMIZED-QUICKSORT operating on a sequence of n distinct input numbers. Prove that for any constant k > 0, all but  of the n! input permutations yield an
 of the n! input permutations yield an  running time.
 running time.
通过与英文原版对比,不难发现中文翻译有一定问题,题中 应为占n!的比例而非数量。
应为占n!的比例而非数量。
 考虑令e为数组中的任一元素, 为第
为第 次划分后,包含元素e的子数组大小,其中
次划分后,包含元素e的子数组大小,其中  ,
,
引理:
证明:这个还是比较好理解的,考虑仅当划分选取的主元是数组中较小或较大的部分时(两部分概率均为1/t), 才能实现,因此引理成立
才能实现,因此引理成立
接下来对数组中的元素e,对包含e的数组大小进行分析。若 则称第
则称第 次划分是成功的。因
次划分是成功的。因 ,在p次成功后,包含元素e的数组大小不大于
,在p次成功后,包含元素e的数组大小不大于 。不难看出,
。不难看出, 时,数组规模减小到1,排序完成(实际上
时,数组规模减小到1,排序完成(实际上 时即满足排序)。
时即满足排序)。
 结合引理我们知道,成功的概率至少为 ,不成功的概率至多为
,不成功的概率至多为 。
。
考虑二项分布,不妨先假定次数为a,不成功次数随机变量为X,根据书中练习5-6可知:

令成功次数随机变量为Y,上式等价于:

代入之前的 ,令
,令 ,得到:
,得到:

此即经过a次划分后数组完成排序的概率,令  ,不等式右边指数部分化为:
,不等式右边指数部分化为:
![[-(\frac{t-2}{t})^{2} \cdot \frac{s}{2} + \frac{t-2}{t} - \frac{1}{2s}]\cdot log_{\frac{t}{t-1}}n](https://file.cfanz.cn/uploads/gif/2022/01/13/3/EW371AV8Y3.gif)
该项在s趋近于+∞时趋近于-无穷,由此可知可以通过在  ,即
,即 复杂度上调节系数,得到的划分次数能够使排序完成概率以任意程度趋近于1,加上每次划分消耗
复杂度上调节系数,得到的划分次数能够使排序完成概率以任意程度趋近于1,加上每次划分消耗 ,于是命题得证。
,于是命题得证。
参考文献
[1] 霍红卫, 许进. 快速排序算法研究[J]. 微电子学与计算机, 2002(6): 6-9.










