- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分治法最大值最小值 付添04113035_19847
《算法设计与分析》
上 机 实 验 报 告
专 业 软件工程 班 级 软件1101班 学 号 学生姓名 付添 完成日期
【排版说明】Times New Roman字体。
(4)正文行距建议设置为1.5倍行距。
(5)实验报告中有图、表的,图、表格式必须标准,有编号,有标题。如下所示(图的标题在下方、表的标题在上方):
图1 XXXXXXX图
表1 XXXXXXX表
数据1 数据2 数据3 数据4 数据5 …… …… …… …… ……
1. 上机题目及实验环境
1.1上机题目:用分治法查找数组元素的最大值和最小值。
1.2实验环境:
CPU:
内存:
操作系统:xp
软件平台:vc6.0
2. 算法设计与分析
基本思想
分治法是最为重要的算法设计方法之一。
主要思想是:将一个问题不断分割成若干个小问题,然后通过对小问题的求解再生成大问题的解。
因此分治法可以分为两个重要步骤:
(1)自顶向下:将问题不断分割成小的问题。
(2)自底而上:将小问题解决来构建大问题的解。
分治和递归经常同时应用在算法设计中。
算法设计
(1)将数据集 S 均分为 S1 和 S2;
(2)求解 S1 和 S2 中的最大和最小值;
(3)最终的最大和最小值可以计算得到:min( S1, S2 ), max( S1, S2 );
(4)采用同样的处理方法递归处理 S1 和 S2。
min_max(S, min, max) {
if |S| = 2 then
min ( min(S)
max ( max(S)
else
split S evenly into S1 and S2
min_max(S1, min1, max1)
min_max(S2, min2, max2)
min ( min(min1, min2)
max ( max(max1, max2)
}
给出具体的原理,算法设计与分析细节等。
核心代码
void min_max(int arry[],int i,int j,int *min,int *max)//找出最大值和最小值
{
int mid,min1,min2,max1,max2;
if(i==j)
{
*max=arry[i];
*min=arry[i];
}
else
{
if(j==i+1)
if(arry[i]arry[j])
{
*min=arry[j];
*max=arry[i];
}
else
{
*min=arry[i];
*max=arry[j];
}
else
{
mid=(i+j+1)/2;
min_max(arry,i,mid,min1,max1);
min_max(arry,mid+1,j,min2,max2);
*min = min1min2 ? min1:min2;
*max = max1max2 ? max1:max2;
}
}
在main函数中通过产生随机数给出数据通过调用min_max函数实现找出最大值,最小值并把他们返回main()函数输出。
4. 运行与调试
给出程序的运行结果。建议给出不同情况下的运行结果并加以比较(如排序算法可以给出输入数据规模不等时的运行结果比较,如数组规模为100时的实验结果、数组规模为1000时的实验结果、数组规模为10000时的实验结果等)。程序运行有屏幕输出的,应给出屏幕截图。
图1 显示随机产生100个0到100个整数 找出了之间的最大值和最小值
图2 显示随机产生1000个0到100个整数 找出了之间的最大值和最小值
图3 显示随机产生10个0到100个整数 找出了之间的最大值和最小值
图1
图2
图3
5. 结果分析和小结
(1)对结果的分析。分析结果可以采用图或者表的形式给出。
运行时由于没有加随机数初始化函数 srand(time(0));每次运行结果都一样 这个问题在设计代码时由于时间匆忙也没有发现 知道被老师检查时 被老师发现 ,以致于我以后再也不会犯这个错误了。
本次上机实验的收获、心得体会。
上机可以督促我自己写代码 每次上机前我都会先把代码大致写好,上机是运行并检查错误,这样不仅提高我的写代码能力,同时对算法这门课也有了更深
您可能关注的文档
- 关于混凝土最小水泥用量的讨论_22593.doc
- 关于物业小区进一步做好创全国文明城市工作的通知_22885.doc
- 关于珍惜的作文_23054.doc
- 关于申报推荐材料初审的几个问题(定稿)_22779.ppt
- 关于申请加入广元市中小企业信用促进会的报告_22780.doc
- 关于痤疮的综合防治_22468.doc
- 关于白银市2009年上半年国民经济和社会发展计划执行情况的报告(定稿)_22389.doc
- 关于癫痫病以及治疗的小知识_22481.docx
- 关于爱贝芙隆下巴相关问题_22381.ppt
- 关于社会保障制度若干问题的调查_22773.doc
- AN024_星历原始观测数据协议.pdf
- APM32F051x6x8数据操作说明 V1.6中文.pdf
- AN1086_APM32F4xx_ISP应用笔记中文.pdf
- APM32F051R8 EVAL Board使用调试操作说明V1.0中文.pdf
- APM32F4xxx用户操作说明 V2.2中文.pdf
- APM32F411xCxE 数据操作说明 V1.3中文.pdf
- AN019_NMEA0183协议说明_北云科技.pdf
- AGP21系列电容式薄膜真空规说明书 A1-20240628.pdf
- AHT40温湿度传感器说明书中文版 A1-202406.pdf
- AN1096_APM32F035_HvMOTOR EVAL无感矢量控制方案_V1.1中文.pdf
文档评论(0)