资源描述:
《《算法设计与分析》上机实验报告模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《算法设计与分析》上机实验报告专业软件工程班级软件1101班学号04113035学生姓名付添完成日期【排版说明】(1)一级标题用宋体四号,加粗。(2)如有二级标题,请使用宋体、小四、加粗。(3)正文汉字均用宋体5号,英文用TimesNewRoman字体。(4)正文行距建议设置为1.5倍行距。(5)实验报告中有图、表的,图、表格式必须标准,有编号,有标题。如下所示(图的标题在下方、表的标题在上方):图1XXXXXXX图表1XXXXXXX表数据1数据2数据3数据4数据5…………………………1.上机题目及实验环境1.1上机题目:计算能存放的程序数1.2实验环境:CPU:内存:操
2、作系统:xp软件平台:vc6.02.算法设计与分析基本思想贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优上加以考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。就该题而言算法设计(1)将数据集S均分为S1和S2;(2)求解S1和S2中的最大和最小值;(3)最终的最大和最小值可以计算得到:min(S1,S2),max(S1,S2);(4)采用同样的处理
3、方法递归处理S1和S2。min_max(S,min,max){if
4、S
5、=2thenminßmin(S)maxßmax(S)elsesplitSevenlyintoS1andS2min_max(S1,min1,max1)min_max(S2,min2,max2)minßmin(min1,min2)maxßmax(max1,max2)}给出具体的原理,算法设计与分析细节等。3.核心代码voidmin_max(intarry[],inti,intj,int*min,int*max)//找出最大值和最小值{intmid,min1,min2,max1,max2;if(i==j){
6、*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=min1max2?max1:max2;}}在main函数中通过产生随机数给出数据通过调用min_max函
7、数实现找出最大值,最小值并把他们返回main()函数输出。4.运行与调试给出程序的运行结果。建议给出不同情况下的运行结果并加以比较(如排序算法可以给出输入数据规模不等时的运行结果比较,如数组规模为100时的实验结果、数组规模为1000时的实验结果、数组规模为10000时的实验结果等)。程序运行有屏幕输出的,应给出屏幕截图。图1显示随机产生100个0到100个整数找出了之间的最大值和最小值图2显示随机产生1000个0到100个整数找出了之间的最大值和最小值图3显示随机产生10个0到100个整数找出了之间的最大值和最小值图1图2图35.结果分析和小结(1)对结果的分析。分析结
8、果可以采用图或者表的形式给出。运行时由于没有加随机数初始化函数srand(time(0));每次运行结果都一样这个问题在设计代码时由于时间匆忙也没有发现知道被老师检查时被老师发现,以致于我以后再也不会犯这个错误了。(2)本次上机实验的收获、心得体会。上机可以督促我自己写代码每次上机前我都会先把代码大致写好,上机是运行并检查错误,这样不仅提高我的写代码能力,同时对算法这门课也有了更深刻的认识。老师检查运行结果可以发现我们的问题所在。对我们学习提供很大帮助。附录(C/C++源代码)列出程序源码。程序设计时注意设计风格。/*用分治法查找数组元素的最大值和最小值。*/#inclu
9、de#include#include#defineM10voidmin_max(intarry[],inti,intj,int*min,int*max){intmid,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{