




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告贪心算法:任务调度问题的设计专业学生姓名班级学号指导教师完成日期目 录1 设计内容12)输入要求13)输出要求12 设计分析12.1 排序(将数组按照从小到大排序)的设计12.2 多个测试案例的处理方法的设计22.3 for循环设计22.4系统流程图23设计实践23.1希尔排序模块设计23.2 多个测试案例的处理方法的模块设计34测试方法45 程序运行效果46 设计心得67附录6贪心算法:任务调度问题的设计1 设计内容 有n项任务,要求按顺序执行,并设定第I项任务需要ti单位时间。如果任务完成的顺序为1,2,n,那么第I项任务完成的时间为ci=t1+ti,平均完成时间(AC
2、T)即为(c1+.+cn)/n。本题要求找到最小的任务平均完成时间。2)输入要求输入数据中包含n个测试案例。每一个案例的第一行给出一个不大于的整数n,接着下面一行开始列出n各非负整数t(t),每个数之间用空格相互隔开,以一个负数来结束输入。3)输出要求对每一个测试案例,打印它的最小平均完成时间,并精确到0.01。每个案例对应的输出结果都占一行。若输入某一个案例中任务数目n=0,则对应输出一个空行。2 设计分析 这个题目属于贪心算法应用中的任务调度问题。要得到所有任务的平均完成时间,只需要将各个任务完成时间从小到大排序,任务实际完成需要的时间等于它等待的时间与自身执行需要的时间之和。这样给出的调
3、度是按照最短作业优先进行来安排的。贪心算法通过一系列的选择来得到一个问题的解。它所做的每一个选择都是当前状态下某种意义的最好选择,即贪心选择。在许多可以用贪心算法求解的问题中一般具有两个重要的性质:贪心选择性质和最有子结构性质。所谓贪心选择性只是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到,这是贪心算法可行的第一基本要素。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终将会得到问题的一个整体最优解。首先考察问题的一个整体最优解,并证明可修改这个最优解,使其以贪心选择开始。而且做了贪心选择后,原问题简化为一个规模更小的类似子问题。然后,用数
4、学归纳法证明,通过每一步做贪心选择,最终可得到问题的一个整体最优解。其中,证明贪心选择后问题简化为规模更小的类似子问题的关键在于利用该问题的最优子结构性质。当一个问题的最优解包含着它的子问题最优解时,称此问题具有最优子结构性质,这个性质是该问题可用贪心算法求解的一个关键特征。2.1 排序(将数组按照从小到大排序)的设计 排序的方法有很多,如:冒泡排序、希尔排序、堆排序等,这些排序的方法都可以使用。这里采用希尔排序来实现。 它的基本思想是:先取一个小于n的整数d1作为第一个增量;这里选取n的一半作为第一个增量(increment=n1),把数组的全部元素分成d1个组。所有距离为d1的倍数的记录放
5、在同一组中。先在各组内进行直接插入排序;然后,取第二个增量d2d1重复上述的分组和排序,直至所取的增量d1=1(dtdt-1d21;increment0;increment=1)for(i=increment;i=increment;j-=increment)if(temp=0;)scanf(%ld,&n);if(n)printf(too much for the project!n);exit(0);if(n0)b=(long * )malloc(n * sizeof(long);a=b;for(i=0;i)printf(too much for the project!n);exit(0)
6、;/*对输入中出现任务时间为负数的异常处理*/if(*(b+i)0;i-,a+)rj+=(double)*a/(double)n*i;j+;free(b);/*当n为0时,标志相应的r数组值为-1.输出时遇到-1,则输出一个空行*/else if(n=0)rj+=-1;for(i=0;ij;i+)if(ri=-1)printf(n);/*输出一个空行8*/else printf(%.2fn,ri);/*输出的结果要求精确到0.01*/return 1;4测试方法 这个程序主要需要测试以下几个方面:l 当任务个数为0时,需要对应输出一个空行。l 当输入的作业数目大于,或者单个作业完成的时间大于的
7、时候,程序要求报错。l 另外,当任务数比较大的时候,输入对应的任务时间是要仔细,务必保证输入的任务个数与要求的任务数一直。如果出现输入的任务数与n值不相符时,程序应会报错,输出“input error!”的错误。 5 程序运行效果5.1正确输入正确输出。图5.1 正确输入输出数据图5.2异常输入数据5.2.1输入数据超出。图5.2.1 超出作业数目异常图5.2.2任务数较大时输出任务个数与要求任务数不一致。 图5.2.2 任务数不一致异常图5.2.3 单个作业完成时间大于。图5.2.3 单个作业完成时间超出异常图6 设计心得 通过本次课程设计我在数据结构编程方面领悟了很多。看到这个选题的时候,
8、其实我并不知道贪心算法是什么算法,甚至都无从下手去设计关于这个的编程以及它的报告。 虽然在中间写的过程中还有很多不会的东西,但是通过查看书本和资料还有问同学,基本上都解决了。但仍然有一些有待提高的地方,比如在排序前后的结果比较和如果运行时间长的任务在等待很长时间都没有运行等较高的要求还没有解决。 设计根据书本以及老师和同组同学的帮助,本次设计也算是完成了。我在这次设计中其实自己也没花好时间去完成。关于程序方面也有许多的不明白。但是通过本次设计,我也领悟到自身有许多的不足。以后会更加花心思,下功夫去完成好每一个老师给予的任务,从而提高自己。 我觉得课程设计的作用一方面是最基本的就是要完成这一科目
9、,差不多也是对自己的一个阶段性的总结;还有就是在整个设计的过程中,让我们认真的独立思考,在和同学交流的过程中也增强了我们的语言组织能力和彼此之间的友谊。通过课程设计让我们不断的发现自己的不足从而去改善,这是一种学习的态度,不仅仅是在这次的课程设计中,在以后的无论生活还是学习方面都应该注意和努力改善。7附录#include#includevoid Shellsort(long *a,long n);int main()long n,i,j;long *a,*b;double r100;j=0;for(n=0;n=0;)scanf(%ld,&n);if(n)printf(too much for the project!n);exit(0);if(n0)b=(long* )malloc(n * sizeof(long);a=b;for(i=0;i)printf(too much for the project!n);exit(0);if(*(b+i)0;i-,a+)rj+=(double)*a/(double)n*i;j+;free(b);else if(n=0)r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个体户拆伙转让合同范本
- 货物培训服务合同范本
- 公司合同评定管理制度
- 股权激励计划实施与调整合同
- 旅游酒店行业雇佣经理合同范本
- 房地产项目股权转让与后期物业管理合同
- 高级管理人员专项雇佣合同协议
- 股权质押借款与知识产权质押贷款结合合同
- 能源资源开发公司股权交易合作协议书
- 私密股份交易合同
- 2024年安徽省合肥市庐江县数学八年级下册期末复习检测试题含解析
- 2020年8月自考00322中国行政史试题及答案含解析
- 废电池的资源化无害化处置技术
- 河北省课程思政示范课程、教学名师和团队申报书
- 优良学风班答辩
- 医院保安服务项目组织机构与人员配备
- TCSAE278-2022《乘用车轮胎干地操纵稳定性和舒适性主观评价方法》
- (本科)大学生劳动教育理论与实践教程全书电子教案完整版
- 马拉松赛事策划方案
- 2.3第1.2课时物质的量课件高一上学期化学人教版
- 新版查对制度专项检查表(涵盖患者身份识别、临床诊疗行为、设备设施运行和医疗环境安全等相关方面)
评论
0/150
提交评论