下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、问题描述:有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块算法思想:分而治之方法与软件设计的模块化方法非常相似。为了解决一个大的问题,可以: 1) 把它分成两个或多个更小的问题; 2) 分别解决每个小问题; 3) 把各小问题的解答组合起来,即可得到原问题的解
2、答。小问题通常与原问题相似,可以递归地使用分而治之策略来解决。问题分析:一般思路:假设袋中有n 个金块。可以用函数M a x(程序1 - 3 1)通过n-1次比较找到最重的金块。找到最重的金块后,可以从余下的n-1个金块中用类似的方法通过n-2次比较找出最轻的金块。这样,比较的总次数为2n-3。分治法:当n很小时,比如说, n2,识别出最重和最轻的金块,一次比较就足够了。当n 较大时(n2),第一步,把这袋金块平分成两个小袋A和B。第二步,分别找出在A和B中最重和最轻的金块。设A中最重和最轻的金块分别为HA 与LA,以此类推,B中最重和最轻的金块分别为HB 和LB。第三步,通过比较HA 和HB
3、,可以找到所有金块中最重的;通过比较LA 和LB,可以找到所有金块中最轻的。在第二步中,若n2,则递归地应用分而治之方法程序设计据上述步骤,可以得出程序1 4 - 1的非递归代码。该程序用于寻找到数组w 0 : n - 1 中的最小数和最大数,若n < 1,则程序返回f a l s e,否则返回t r u e。当n1时,程序1 4 - 1给M i n和M a x置初值以使w M i n 是最小的重量,w M a x 为最大的重量。首先处理n1的情况。若n>1且为奇数,第一个重量w 0 将成为最小值和最大值的候选值,因此将有偶数个重量值w 1 : n - 1 参与f o r循环。当n
4、 是偶数时,首先将两个重量值放在for 循环外进行比较,较小和较大的重量值分别置为Min和Max,因此也有偶数个重量值w2:n-1参与for循环。在for 循环中,外层if 通过比较确定( w i , w i + 1 )中的较大和较小者。此工作与前面提到的分而治之算法步骤中的2) 相对应,而内层的i f负责找出较小重量值和较大重量值中的最小值和最大值,这个工作对应于3 )。for 循环将每一对重量值中较小值和较大值分别与当前的最小值w M i n 和最大值w M a x 进行比较,根据比较结果来修改M i n和M a x(如果必要)。复杂性分析注意到当n为偶数时,在for 循环外部将执行一次比
5、较而在f o r循环内部执行3 ( n / 2 - 1 )次比较,比较的总次数为3 n / 2 - 2。当n 为奇数时,f o r循环外部没有执行比较,而内部执行了3(n-1)/2次比较。因此无论n 为奇数或偶数,当n>0时,比较的总次数为3n/2ù-2次。关键步骤:程序14-1 找出最小值和最大值的非递归程序template<class T>bool MinMax(T w, int n, T& Min, T& Max)/ 寻找w 0 : n - 1 中的最小和最大值/ 如果少于一个元素,则返回f a l s e/ 特殊情形: n <= 1if
6、 (n < 1) return false;if (n = 1) Min = Max = 0;return true;/ /对Min 和M a x进行初始化int s; / 循环起点if (n % 2) / n 为奇数Min = Max = 0;s = 1;else / n为偶数,比较第一对if (w0 > w1) Min = 1;Max = 0;else Min = 0;Max = 1;s = 2;/ 比较余下的数对for (int i = s; i < n; i += 2) / 寻找wi 和w i + 1 中的较大者 / 然后将较大者与w M a x 进行比较 / 将较小者与w M i n 进行比较if (wi > wi+1) if (wi > wMax) Max = i;if (wi+1 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康赋能:护理健康教育的核心技巧与实践策略
- 丹毒合并淋巴管炎个案护理
- 营口市重点中学2025年化学高一上期中达标检测试题含解析
- 云南省大理州新世纪中学2025年高二上化学期末教学质量检测试题含解析
- 肾球门血管病的护理
- 倾听、陪伴与关怀:舒缓护理的人文底色
- 难免性流产护理查房中的护理措施
- 医学生基础医学 肝功能检验护理课件
- 医学生基础医学 出血性皮疹护理课件
- 医学生基础医学 跌倒预防护理课件
- 2025年湖北省新八校高二语文上学期期中联考作文范文3篇:《五石之瓠》《赤壁赋》
- 索菲亚全屋定制合同模板2025年家居改造合同协议
- 企业软件正版化培训
- Unit 4 Ready for school(说课稿)-2024-2025学年人教PEP版(一起)(2024)英语一年级上册
- Unit6一课一清(知识点整合背诵)译林版七年级英语上册
- 2025云南石林国有资本投资集团有限公司及下属公司招聘30人笔试考试参考试题及答案解析
- 输变电工程建设现行主要质量管理制度、施工与验收质量标准目录-2026年2月版-
- ASTM-D3359-(附著力测试标准)-中文版
- 提升机安装验收表01
- 空间激光通信的零差接收技术研究
- 消防器材供应及售后服务方案
评论
0/150
提交评论