- 10
- 0
- 约2.86万字
- 约 50页
- 2017-08-16 发布于浙江
- 举报
算法设计与分析_第2章_递归与分治3
算法设计与分析
第2章 递归与分治策略
第2章 递归与分治策略
(3)
(3)
线性时间选择
元素选择问题
给定线性序集中n个元素和一个整数k ,
1 ≤k ≤n ,要找出这n个元素中第k 小的元素
Type RandomizedSelect(Type a[],int p,int r,int k)
{ 和快排算法有
if (p==r) return a[p]; 什么不同??
int i=RandomizedPartition(a,p,r),
j=i-p+1; //a[p:i] 中元素个数j
if (k=j) return RandomizedSelect(a,p,i,k);
else return RandomizedSelect(a,i+1,r,k-j);
} 2
线性时间选择
设计思路
利用PARTITION过程。如果划分元素在A(j)
的位置上,则有j-1 个元素小于或等于A(j) ,
且有n-j个元素大于或等于A(j) 。此时,
若k=j ,则A(j) 即是第k 小元素;否则,
若kj ,则第k 小元素将出现在A(1:j-1) 中;
若kj ,则第k 小元素将出现在A(j+1:n) 中。
3
线性时间选择
与快速排序算法的异同点?
基本思想相同
对输入数组进行递归划分
不同
线性时间选择只对划分出的子数组之一进行
递归处理
2
在最坏情况下,算法randomizedSelect需要O(n )计算时间
但可以证明,算法randomizedSelect可以在O(n)平均时间内
找出n个输入元素中的第k小元素。 4
线性时间选择
线性时间选择问题:在一个具有n个元素
的集合中,能够在最优线性时间内找到
中项或通常意义上的第k 小元素。
基本思想
假设递归算法中,在每个递归调用的划分步
骤后,丢弃元素的一个固定部分并且对剩余
的元素递归,则问题的规模以几何级数递
减,也就是在每个调用过程中,问题的规模
以一个常因子被减小。
5
线性时间选择
例如
假设算法丢弃1/3并对剩余的2/3部分递归,则在第2
次调用中,元素的个数变为2n/3个,第3次调用中为
4n/9个,第4次调用中变为8n/27等等。
假设在每次调用中,算法对每个元素耗费的时间不
超过一个常数,则耗费在处理所有元素上的全部时
间产生一个几何级数
cn+(2/3)cn+(2/3)2 i
cn+…+(2/3) cn+…
= ∝
您可能关注的文档
最近下载
- (高清版)B-T 6739-2022 色漆和清漆 铅笔法测定漆膜硬度.pdf VIP
- 康玉明-如何撰写国家自然科学基金申课件.ppt VIP
- 在带头固本培元、增强党性等“五个带头”对照检查发言材料2篇范文2026年.docx VIP
- 2025《医疗器械经营质量管理规范》培训课件.docx VIP
- 农产品质量安全检测知识竞赛考试题库资料500题(供参考).pdf VIP
- 卓梅尼GTEC188 电梯控制系统调试手册v1.4.pdf
- 汽轮机热力性能试验的技术应用.ppt
- 心理痛苦评估表、焦虑、抑郁自评量表、预期性悲伤量表、社会支持评定量表、患者尊严量表.pdf VIP
- 心律失常专题宣讲.ppt VIP
- 网红直播对消费者购买决策行为影响因素研究.docx
原创力文档

文档评论(0)