“三数取中“划分
来源:互联网 发布:传奇霸业勋章升级数据 编辑:程序博客网 时间:2024/04/29 22:50
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):快速排序(随机划分+三数取中划分+ 随机三数取中划分+尾递归)
- 基础算法(2):快速排序(随机划分+三数取中划分+ 随机三数取中划分+尾递归)
- 算法导论7-5(三数取中划分)
- 算法导论第七章思考题7-5三数取中划分 -c++
- 子网划分
- 整数划分
- vlan 划分
- 星座划分
- 内存划分
- 平面划分
- 划分算法
- 子网掩码划分
- 整数划分
- 划分工作
- 网络地址划分
- WPF初学者之XAML的资源(Resources)结构
- fetch next from的使用
- (转)学习ViewState笔记
- Eclipse 代码收缩 快捷键
- PELCO-D与PELCO-P基本协议
- “三数取中“划分
- [经验分享]Google如何测试软件
- 为apt-get设置http代理
- WPF初学者之几种WPF程序的入口说明
- 批处理应用
- 软件项目为什么会失败?- 浅谈需求驱动的项目管理
- 第十三节--如何在dos下,查看android创建的数据库和表
- sql server系统表详细说明
- 两个页面垂直居中的范例