版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、舍伍德(Sherwood)算法设A是一个确定性算法,当它的输入实例为x时所需的计算时间记为tA(x)。设Xn是算法A的输入规模为n的实例的全体,则当问题的输匚(珀二乂尺I入规模为n时,算法A所需的平均时间为仁这显然不能排除存在xXn使得:J;"的可能性。希望获得一个随机化算法B,使得对问题的输入规模为的每一个实例均有门=,:":1-“:1。这就是舍伍德算法设计的基本思想。当s(n)与tA(n)相比可忽略时,舍伍德算法可获得很好的平均性能。2、线性时间选择算法D随机划分选择基准对于选择问题而言,用拟中位数作为划分基准可以保证在最坏的情况下用线性时间完成选择。如果只简单地用
2、待划分数组的第一个元素作为划分基准,则算法的平均性能较好,而在最坏的情况下需要0(n"2)计算时间。舍伍德选择算法则随机地选择一个数组元素作为划分基准,这样既保证算法的线性时间平均性能,又避免了计算拟中位数的麻烦。非递归的舍伍德型选择算法如下:cppviewplaincopy1. 随机化算法线性时间选择随机划分选择基准2. #include"stdafx.h"3. #include"RandomNumber.h"4. #include<iostream>5. usingnamespacestd;6.7.8.9.10.11.12.13
3、.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.template<classTypeTypeselect(Typea,intl,intr,intk);template<classTypeTypeselect(Typea,intn,intk);template<classTypeinlinevoidSwap(Type&a,Type&b);intmain()inta=5,7,3,4,8,6,9,1
4、,2;cout<<"原数组为:"<<endl;for(inti=0;i<9;i+)cout<<ai<<""cout<<endl;cout<<"所给数组第7小元素为:"<<select(a,9,7)<<endl;return0;/计算a0:n-1中第k小元素/假设an是一个键值无穷大的元素template<classTypeTypeselect(Typea,intn,intk)if(k<1|k>n)cout<&l
5、t;"请输入正确的k!"<<endl;return0;returnselect(a,0,n-1,k);/计算al:r中第k小元素template<classType>Typeselect(Typea,intl,intr,intk)staticRandomNumberrnd;while(true)if(l>=r)50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89
6、.90.91.92.93.returnal;inti=l,j=l+rnd.Random(r-l+1);/随机选择划分基准Swap(ai,aj);j=r+1;Typepivot=al;/以划分基准为轴做元素交换while(true)while(a+i<pivot);while(a-j>pivot);if(i>=j)break;Swap(ai,aj);if(j-l+1=k)/第k小returnpivot;/aj必然小于pivot,做最后一次交换,满足左侧比pivot小,右侧比pivot大al=aj;aj=pivot;对子数组重复划分过程if(j-l+1<k)k=k-j+l-
7、1;/右侧:k-(j-l+1)=k-j+l-1l=j+1;elser=j-1;94. 95.95. template<classType96. inlinevoidSwap(Type&a,Type&b)98. 99.Typetemp=a;100.a=b;101.102.b=temp;程序运行结果如图:原数组为=5734S691E匝氛鞍织曙邛远素为谙按任意键-:2)随机洗牌预处理有时也会遇到这样的情况,即所给的确定性算法无法直接改造成舍伍德型算法。此时可借助于随机预处理技术,不改变原有的确定性算法,仅对其输入进行随机洗牌,同样可收到舍伍德算法的效果。例如,对于确定性选择算法
8、,可以用下面的洗牌算法shuffle将数组a中元素随机排列,然后用确定性选择算法求解。这样做所收到的效果与舍伍德型算法的效果是一样的。cppviewplaincopy1. 随机化算法线性时间选择输入预处理,洗牌2. #include"stdafx.h"3. #include"RandomNumber.h"4. #include<iostream>5. usingnamespacestd;67. template<classType8. Typeselect(Typea,intl,intr,intk);9.9. template<c
9、lassType10. Typeselect(Typea,intn,intk);12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.template<classTypevoidShuffle(Typea,intn);template<classTypeinlinevoidSwap(Type&a,Type&b);intmain()inta=5,7,3,4
10、,8,6,9,1,2;cout<<"原数组为:"<<endl;for(inti=0;i<9;i+)cout<<ai<<""cout<<endl;Shuffle(a,9);/洗牌cout<<"洗牌后数组为:"<<endl;for(inti=0;i<9;i+)cout<<ai<<""cout<<endl;cout<<"所给数组第7小元素为:"<<
11、select(a,9,7)<<endl;return0;/计算a0:n-1中第k小元素/假设an是一个键值无穷大的元素template<classTypeTypeselect(Typea,intn,intk)if(k<1|k>n)cout<<"请输入正确的k!"<<endl;return0;returnselect(a,0,n-1,k);/计算al:r中第k小元素template<classTypeTypeselect(Typea,intl,intr,intk)while(true)57.58.59.60.61.6
12、2.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.if(l>=r)returnal;inti=l;intj=r+1;Typepivot=al;/以划分基准为轴做元素交换while(true)while(a+i<pivot);while(a-j>pivot);if(i>=j)break;Swap(ai,aj);if(j-l+1=k)/第k小returnpivot;右侧比pivot大/aj必然小于pivot,做最后一次交换,满足左侧比pivot小,al=aj;aj=pivot;对子数组重复划分过程if(j-l+1<k)k=k-j+l-1;/右侧:k-(j-l+1)=k-j+l-1l=j+1;elser=j-1;template<classType>101.inlinevoidSwap(Type&a,Type&b)102.103.Typetemp=a;104.a=b;1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动感应封口机行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告(2024-2030)
- 2024-2029年药品包装行业兼并重组机会研究及决策咨询报告
- 2024-2029年自动化机床行业市场发展分析及竞争格局与投资战略研究报告
- 2024-2034年中国中成药行业发展前景预测及投资战略咨询报告
- 2024-2034年中国MS树脂(苯乙烯-甲基丙烯酸甲酯树脂)行业市场现状分析及竞争格局与投资发展研究报告
- 2024-2030年中国镁碳砖产业发展分析及投资前景预测报告
- GB/T 9058-2024奇数沟千分尺
- 2023年数控弧齿锥齿轮铣齿机资金申请报告
- 化学反应工程-知到答案、智慧树答案
- 海运业务与海商法-知到答案、智慧树答案
- 广深港段tsrs与内地rbc接口规格书及测试计划
- 苏科版二年级下册劳动第7课《做皮影》课件
- 2023年《高等学校英语应用能力考试》B级12月PET-B真题
- 2023年中考地理真题试题(含答案)新人教版
- 苏教版一年级下册科学《形形色色的动物》课件
- 2023年河南省铁路建设投资集团有限公司招聘笔试模拟试题及答案解析
- 学前儿童安全教育全套课件
- 工具:幼儿发展评价内容纵横解读与观察点指引
- HTRI设计实例-最实用的初学者入门教材
- 《戏剧鉴赏》考试复习题库150题(含答案)
- 给煤机、振动筛管理制度
评论
0/150
提交评论