欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    算法分析与设计实验报告.pdf

    • 资源ID:82081893       资源大小:618.24KB        全文页数:14页
    • 资源格式: PDF        下载积分:19.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要19.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    算法分析与设计实验报告.pdf

    算法设计与分析 学院:计算机科学与技术 学号:*姓名:*2014 11 14 1、当问题规模100N时,快速排序和插入排序各需多少时间?写清机器配置,列出五种规模下各自需要的时间。按照下列表格提交:快速排序所需时间(ms)插入排序所需时间(ms)两者相差多少 N=100 0.00600 0.019000-0.013000 N=1000 0.074000 0.724000-0.650000 N=10000 0.032000 64.657000-64.625000 N=100000 13.300000 50.900000-37.600000 N=1000000 53.500000 117.700000-64.200000 机器配置:Window 7 32 位 Cpu:Inter(R)Core(TM)*AMD Radeon HD 6450 Graphics 程序:#include#include#include#include int a1000000;int b1000000;void QuickSort(int low,int high)long i,j;int x;i=low;j=high;x=ai;while(i=x&ij)j-;ai=aj;while(ai=x&ij)i+;aj=ai;ai=x;if(low(j+1)QuickSort(j+1,high);void BinaryInsertSort(int length)int low,high,mid;int i,j,m;/m 为保存待插入的元素 for(i=1;ilength;i+)m=bi;low=0;high=i-1;/设置初始区 while(low=bmid)low=mid+1;else high=mid-1;for(j=i-1;j=high+1;j-)/high 为插入位置 bj+1=bj;/后移元素,留出插入的空位 bhigh+1=m;/将元素插入正确的位置 void main()time_t start,finish;/time_t 相当于 long double between_time1,between_time2,between_time;/1 表示快速排序所需时间,2 表示插入排序所需时间,between_time 表示两种排序之间的差值 struct _timeb timebuffer1,timebuffer2;int startm,finishm;double total1=0,total2=0;/1 表示规模为 N 时,快速排序所需的累计时间,2 表示规模为 N 是,插入排序所需的累计时间 int N,i,j;/N 表示问题规模 printf(n 请输入问题的规模:);scanf(%d,&N);/对一堆数据进行排序,排序 1000 次,求其排序的平均时间 for(i=0;i1000;i+)srand(unsigned)time(NULL);/对每次的排序进行设置随机种子(即编号)for(j=0;jN;j+)aj=rand();bj=aj;/快速排序 _ftime(&timebuffer1);/计算当前时间 startm=timebuffer1.millitm;/start=timebuffer1.time;QuickSort(0,N-1);/printf(n 快速排序之后的数据为:);/for(i=0;iN;i+)/printf(%d ,ai);/_ftime(&timebuffer1);finishm=timebuffer1.millitm;finish=timebuffer1.time;between_time1=difftime(finish,start);/找出时间差 between_time1=1000*between_time1+finishm-startm;total1=total1+between_time1;/插入排序 _ftime(&timebuffer2);startm=timebuffer2.millitm;start=timebuffer2.time;BinaryInsertSort(N);/printf(n 插入排序之后的数据为:);/for(i=0;iN;i+)/printf(%d ,bi);/_ftime(&timebuffer2);finishm=timebuffer2.millitm;finish=timebuffer2.time;between_time2=difftime(finish,start);between_time2=between_time2*1000+finishm-startm;/total2=total2+between_time2;printf(n 快速排序的时间(以毫秒为单位)是:%6.6f,total1/1000);printf(n 插入排序的时间(以毫秒为单位)是:%6.6f,total2/1000);between_time=total1/1000-total2/1000;printf(n 两种排序相差的时间是:%6.6fnn,between_time);2 用贪心算法实现背包问题,按下表格式列出其中的五种情况,其中物品个数、背包容量、物品重量和物品价值要随机产生。物品个数N 背包容量C 物品重量Wi 物品价值Vi 最优值 最优解 所 需 时 间(ms)2 5.0000 2.0000 10.0000 26.0000 40.0000 2.0000 26.0000 3.0000 12.0000 38.0000 1.00000000 3 8.3333 10.0000 3.0000 9.0000 21.0000 58.0000 58.0000 3.0000 58.0000 5.3333 34.7304 92.3704 1.00000000 4 9.0000 2.0000 10.0000 5.0000 7.0000 64.0000 2.0000 2.0000 96.0000 2.0000 64.0000 7.0000 96.0000 160.0000 4.00000000 5 10.6667 4.0000 9.0000 4.0000 8.0000 76.0000 53.0000 6.0000 14.0000 4.0000 76.0000 4.0000 72.0000 2.6667 15.7037 163.7037 5.00000000 4.0000 72.0000 6 13.6667 6.0000 4.0000 7.0000 9.0000 5.0000 7.0000 42.0000 50.0000 66.0000 45.0000 7.0000 48.0000 4.0000 50.0000 7.0000 66.0000 2.6667 18.6667 134.6667 5.00000000 背包程序#include#include#include#include double W100;/重量 double V100;/价值 double unit_price100;/表示每个物品的单价 void QuickSort(int low,int high)/对单价进行排序 long i,j;double x;double w,v;i=low;j=high;x=unit_pricei;w=Wi;v=Vi;while(i=x&ij)j-;unit_pricei=unit_pricej;Wi=Wj;/将重量,价值和单价的下标始终统一 Vi=Vj;while(unit_pricei=x&ij)i+;unit_pricej=unit_pricei;Wj=Wi;Vj=Vi;unit_pricei=x;Wi=w;Vi=v;if(low(j+1)QuickSort(j+1,high);void main()time_t start,finish;double between_time;int startm,finishm;struct _timeb timebuffer;int N,i,j;/N 表示物品个数 double sum=0,C,best_value=0;printf(n 请输入物品个数(假设不超过 100):);scanf(%d,&N);/随机产生物品重量以及价值 srand(unsigned)time(NULL);printf(n 随机产生的物品重量,价值:);for(i=0;iN;i+)Wi=rand()%10+1;/重量产生的在 10 以内 Vi=rand()%100+1;/价值在 100 以内 printf(n%6.4lf,%6.4lf,Wi,Vi);for(i=0;iN;i+)sum=sum+Wi;C=sum/3+1;/将背包容量设为所有物品重量的三分之一加 1 printf(nn 该背包的容量为:%6.4lf,C);/从此处开始计算时间 _ftime(&timebuffer);startm=timebuffer.millitm;start=timebuffer.time;for(i=0;i=0;i-)if(Ci;j-)printf(n%6.4lf%6.4lf,Wj,Vj);best_value=best_value+Vj;printf(n%6.4lf%6.4lf,C,C*unit_pricei);best_value=best_value+C*unit_pricei;printf(nn 最优值为:%6.4lf,best_value);/计算时间结束 _ftime(&timebuffer);finishm=timebuffer.millitm;finish=timebuffer.time;between_time=difftime(finish,start)*1000+finishm-startm;printf(nn 该次所需时间为:%6.8lfnn,between_time);3趣味矩阵:#include main()char a100100;int i,j,n;scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n;j+)if(i=j)|(i+j=n+1)aij=A;else if(ij&i+jj&i+jj&i+jn+1)aij=D;else aij=4;for(i=1;i=n;i+)for(j=1;j80),并且在本学期内发表1 篇或 1 篇以上论文的学生均可获得;2)五四奖学金,每人 4000 元,期末平均成绩高于 85 分(85),并且班级评议成绩高于 80 分(80)的学生均可获得;3)成绩优秀奖,每人 2000 元,期末平均成绩高于 90 分(90)的学生均可获得;4)西部奖学金,每人 1000 元,期末平均成绩高于 85 分(85)的西部省份学生均可获得;5)班级贡献奖,每人 850 元,班级评议成绩高于 80 分(80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是 87 分,班级评议成绩 82 分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是 4850 元。你的任务:现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。并给出实现代码和 5 组实验数据。输入格式:输入的第一行是一个整数 N(1=N=100),表示学生的总数。接下来的 N 行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过 20的字符串(不含空格);期末平均成绩和班级评议成绩都是 0 到 100 之间的整数(包括 0和 100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y 表示是,N 表示不是;发表的论文数是 0 到 10 的整数(包括 0 和 10)。每两个相邻数据项之间用一个空格分隔。输出格式:输出包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这 N 个学生获得的奖学金的总数。样例输入:4 YaoLin 87 82 Y N 0 ChenRuiyi 88 78 N Y 1 LiXin 92 88 N N 0 ZhangQin 83 87 Y N 1 样例输出:ChenRuiyi 9000 28700 程序:#include using namespace std;int main()int i,j,n,qm,py,lw,prize,max=0;long total=0;char a20,name20,xb,gb;cinn;for(i=1;iaqmpygbxblw;prize=0;if(qm80)&(lw0)prize+=8000;if(qm85)&(py80)prize+=4000;if(qm90)prize+=2000;if(qm85)&(xb=Y)prize+=1000;if(py80)&(gb=Y)prize+=850;total+=prize;if(prizemax)max=prize;for(j=0;j20;j+)namej=aj;coutnameendlmaxendltotal;return 0;

    注意事项

    本文(算法分析与设计实验报告.pdf)为本站会员(l***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开