证明randomized quicksort的平均running time为nlgn 的数学过程

假设被排序数为 n 个, 找pivot的随机办法对每一个数的概率严格为 1/n .

步骤一: 建模。

假设将第 K 个数选为pivot , 则子问题规模为  k-1 和 n-k , 并且该分割的running time 为 Θ(n)

所以容易得到: T(n) = T(k-1) + T(n-k) + Θ(n)

步骤二:用喊有指示随机变量 Xk 来表达T(n)。

设Xk 为指示随机变量 (当第k个数被选为pivot ,则 Xk = 1 ,相反则等于0),则有:

T(n) = X1(T(0) + T(n) + Θ(n)) + X2(T(1) + T(n) + Θ(n)) + ...... + Xn(T(n) + T(n) + Θ(n))

= Sum( Xk( T(k-1) + T(n-k) + Θ(n) ) (k=1,2,3 ......) 

步骤三:对两边取期望并化简。

对两边取期望:

E(T(n)) = E( X1(T(0) + T(n) + Θ(n)) + X2(T(1) + T(n) + Θ(n)) + ...... + Xn(T(n) + T(n) + Θ(n)) )

E(T(n)) = E(Sum( Xk( T(k-1) + T(n-k) + Θ(n) )) (k=1,2,3......)

利用期望的线性属性有:

E(T(n)) = Sum(E(Xk( T(k-1) + T(n-k) + Θ(n)))

由于E(Xk) = 1/n  (随机概率的期望等于事件发生的概率) ,并且Xk 是独立的,所以

E(T(n)) = 1/n Sum(T(k-1) + T(n-k) + Θ(n))

由于Sum(T(k-1)) 和  Sum(T(n-k)) 是相等的(相当与 1 + 2 + 3 和 3 + 2 + 1)

所以

E(T(n)) = 2/n Sum(T(k))

步骤四:用代替法证明 E(T(n)) <= anlgn

由于是证明  T(n) = Θ(nlgn)

用替代法有:

E(T(n)) <= 2/n Sum(anlgn) = 2a/n Sum(nlgn)

用到一个结论: Sum(nlgn) 对于 n=2 , 3,4, .... , n-1 , 有 Sum(nlgn) <= 1/2n2lgn - 1/8n2

所以

2a/n Sum(nlgn) for n = 0,1,2,3......n <= 2a/n Sum(nlgn) for n = 2,3,4....,n-1 <= 2a/n (1/2n2lgn - 1/8n2) = Θ(nlgn) 得证。

posted on 2012-09-10 20:23 我是正常蛇 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/louis-sherren/archive/2012/09/10/math-quick-sort.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值