ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:76.21KB ,
资源ID:10661087      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10661087.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(分治与递归算法实验.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

分治与递归算法实验.doc

1、实验二 分治与递归算法的应用一、实验目的1掌握分治算法的基本思想(分-治-合) 、技巧和效率分析方法。2熟练掌握用递归设计分治算法的基本步骤(基准与递归方程) 。3学会利用分治算法解决实际问题。二、实验内容 1.问题描述:题目一:线性时间选择给定 n 个元素和一个整数 k,要求用 O(n)时间找出这 n 个元素中第 k 小元素。题目二:金块问题老板有一袋金块(共 n 块,n 是 2 的幂(n2) ),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。并对自己的程序进行复杂性分析。【输入输出样例】题目三:求最大两个数

2、和最小两个数利用分治法求一组数据中最大的两个数和最小的两个数。2.数据输入:个人设定,由键盘输入。3.要求:1)上述题目任选其二。上机前,完成程序代码的编写2)独立完成实验及实验报告三、实验步骤1.理解算法思想和问题要求;2.编程实现题目要求;3.上机输入和调试自己所编的程序;4.验证分析实验结果;5.整理出实验报告。一实验目的二问题描述三算法设计包含:数据结构与核心算法的设计描述、函数调用及主函数设计、主要算法流程图等1. 金块问题: 考虑到可能输入数据有一个或者两个这种情况,所以解决问题时分三种情况考虑,然后通过函数调用来实现寻找最大最小的数值。 复杂性分析:当 n 是 2 的幂时,即对于

3、某个正整数 k,n 等于 2 的 k 次方,可以证明,任何以元素比较为基础的找最大和最小元素的算法,其元素比较下界均为3n/2-2 次。因此,过程 maxmin 在这种意义上是最优的。T(n)=2T(n/2)+2Main 函数输入金块数量循环读入数据调用maxmin 函数2. 最大最小两个数:与金块问题类似,这是寻找最大最小的两个数。利用循环嵌套条件语句进行判断,选择出最大最小的两个数。四.程序调试及运行结果分析1) 有五个金块,其重量分别为 2.3,1.3 ,6.9, 2, 1 成功运行程序后输出最重和最轻的金块的重量。输出结果Main 函数输入相关数据调用_maxmin函数利用条件语句进行

4、判断返回 max min输出结果2) 如下图所示,输入六个数分别为:5,9,12,3,16,2 成功运行后,输出最大的 2 个元素 16,12 最小的 2 个元素 2,3。五.实验总结通过本次实验,我学会了如何运用分治法将整个问题分解成若干个小问题后分而治之,使其产生出方便求解的子问题,必要时逐步合并这些子问题的解,从而得到问题的解。在实验中我观察了相关算法结合老师上课讲解的,我觉得这类问题实际可以用一个递归方程来表示,通过递归逐步求解问题。同时,通过本次实验我也发现递归算法的重要性,自己对递归算法还不能熟练的应用。所以,在课下我会继续努力掌握这种算法,以便能在以后熟练的应用它。通过第三题明白

5、了眼过千变不如手动一遍,上课是听懂了.课下我又仔细的上网看了研究了一下,但是今天敲出来还是有一些问题,我觉得一些问题是值得注意的.附录:程序清单 (程序过长,可附主要部分)1) 金块问题程序如下:#includeusing namespace std;int i,n;float a100;void maxmin(int i,int j,float float lmax,lmin,rmax,rmin;if(i=j)fmax=ai;fmin=ai;else if(i=j-1)if(airmax)fmax=lmax;elsefmax=rmax;if(lminrmin)fmin=rmin;elsefm

6、in=lmin;int main()coutn;coutai;float max,min;maxmin(1,n,max,min);coutusing namespace std; int a100; void _maxmin(int i,int j,int *max1,int *min1,int *max2,int *min2) int max,min,minmax,minmin; if(i=j) *max1=*min1=*min2=*max2=ai; else if(i=j-1) if(aimin) *min2=*min1; *min1=min; if(min!=minmin) if(*min2minmin) *min2=minmin; else if(*min2min) *min2=min; int main() int n,i,m,max2,min2; coutn; coutm; ai=m; _maxmin(0,n-1, cout“输入的数中最大的 2 个元素为:“max0“ “max1endl;cout“输入的数中最小的 2 个元素为:“min0“ “min1endl;return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报