


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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秋招信息科技岗笔试题及答案
- 英语语音语调基础训练教课计划
- 幼儿园教师资格考试保教知识与能力试卷与参考答案(2025年)
- 会议策划与执行流程操作手册
- 企业运营成本控制与监测平台
- ASTM-D3359-(附著力测试标准)-中文版
- 2024年铝材购销的合同范本
- T-CACM 1560.1-2023 中医养生保健服务(非医疗)技术操作规范推拿
- 护理美学-第三章 护士审美修养
- 篮球教学活动设计方案
- (高清版)JTG 5211-2024 农村公路技术状况评定标准
- 大学生生涯发展展示 (修改版)
- DB32T4062-2021城市轨道交通工程质量验收统一标准
- (正式版)JBT 14897-2024 起重磁铁安全技术规范
- 三D打印公开课
- 西方节日-英文介绍
评论
0/150
提交评论