(另一种快速排序的分析方法)对随机化版本的快速排序算法,还有另一种性能分析方法,这一方法关注于每一次单独递归调用的期望运行时间,而不是比较次数。
a. 证明:给定一个大小为
的数组,任何特定元素被选为主元的概率为
。利用这一点来定义指示器随机变量
{第
小的元素被选为主元},
是什么?
b. 设
是一个表示快速排序在一个大小为
的数组上的运行时间的随机变量,试证明:
c. 证明公式(7.5)可以重写为:
d. 证明:
(提示:可以将该累加式分为两个部分,一部分是
,另一部分是
。)
e. 利用公式(7.7)中给出的界证明:公式(7.6)中的递归式有解
。(提示:使用代入法,证明对于某个正常数
和足够大的
,有
。)
解
a.
数组每个元素都等可能地被选为主元。因此,对于单一元素,它被选为主元的概率为
。
就等于第
小的元素被选为主元的概率,即
{第
小的元素被选为主元}
。
b.
对于一个大小为
的数组,如果选定第
小的元素(该元素用
表示)为主元,那么划分得到的
个子数组的大小分别为
和
。于是可以得到以下递归式
表示在选定第
小的元素为主元的前提下,对大小为
的数组进行快速排序的运行时间。其实
也是一个随机变量,因为
和
也是随机变量,即
也是随机变量。于是可以写出
的期望
的取值范围是
,于是我们可以计算
的期望
上式中,
成立,是因为随机变量
和
是互相独立的。
c.
将公式(7.5)的累加求和部分展开,得到下表
由上表可知,第
个累加项与第
个累加项是完全对称相等的。于是有
上式中,
和
分别对应的
和
都为常数时间,可以将它们拿掉,这样并不影响最终的结果。于是有
d.
按照提示,将累加式分为2个部分,于是有
e.
只需证明
即可。
初始情况取
,
为常数时间。显然,只要取足够大的
,就可使得
成立。
下面进行归纳过程。假设
对
都成立,那么有
只要取足够大的
,就能使得
成立,即
成立。
算法导论 — 思考题7-3 另一种快速排序的分析方法
猜你喜欢
转载自blog.csdn.net/yangtzhou/article/details/88771305
今日推荐
周排行