算法分析与设计实践(作业六):寻找第k小元素[特定分治策略]
1. 问题
利用特定分治策略选出第k小的元素。
2. 解析
3. 分析
void select(vector<int>s,int n,int k){
把s划分成最多5个一组
把每组的中位数放到集合m中
找出中位数的中位数m* //用划分成四部分ABCD
把AD中的每个元素与中位数比较大小,小的构成s1,大的构成s2
s1=s1并C,s2=s2并B
if k==s1的大小
输出m*
return
else if k<=s1的大小
select(s1,s1的大小,k)
else
select(s2,s2的大小,k-s1的大小-1)
end if
}