“三数取中“划分

7-3 “三数取中“划分

      有一种改进RANDOM-QUICKSORT的方法,就是根据从子数组更仔细地选择的(而不是随机选择的)元素作为主元来划分。常用的做法是三数 取中:从子数组中随机选出三个元素,取其中间数作为主元。针对这个问题,假设数组A[1...n]中的元素都不相同,并且有n≥3,用 A'[1...n] 表示已排好序的数组。用“三数取中"方法来选择主元元素x,并定义pi=Pr{x=A'[i]}。

a)对于i=2,3,...,n-1,给出pi的以n和i表示的准确表达式。(注意p1=pn=0)。

b)与一般实现比较,这种实现方法中取A[1...n]的中值x=A'⌊(n+1)/2⌋的可能性增加多少?假设n->∞,请给出这两个概率比值的极限。

c)如果定义一个”好“的划分是选择了x=A'[i],其中n/3≤i≤2n/3,则与一般实现相比,这时得到一个好的划分的可能性增加了多少(提示 :用积分来近似和式)

d)论证相对快速排序而言,”三数区中“方法仅影响其运行时间 Ω(n lg n) 中的常数因数。

 

分析与思考:

a)pi表示主元为i,对应的意义是:三个数中有一个数为i,然后其他两个数中有一个数大于i,另外一个数小于i,则相应的概率为:

             

b) 将i = ⌊(n+1)/2⌋代入到pi中,得到

 

             

   一般的方法取得中值的可能性为1/n

            

c) 一般的方法中取得好的划分的概率为1/3,这种方法为

       

    因此取得好的划分的概率增加了4/9

 

d) 先求出期望的位置

             

也就是ET = E(T/2)+n

根据主定率,期望的运行时间ET =  Ω(n lg n) ,因此和一般的方法只差常数因子

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值