算法分析与设计实验报告.pdf
《算法分析与设计实验报告.pdf》由会员分享,可在线阅读,更多相关《算法分析与设计实验报告.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析 学院:计算机科学与技术 学号:*姓名:*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.7000
2、00-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 Binary
3、InsertSort(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,betw
4、een_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;i1
5、000;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=tim
6、ebuffer1.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(&timebu
7、ffer2);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;
8、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.000
9、0 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.00
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 实验 报告
限制150内