算法设计实验报告.doc_第1页
算法设计实验报告.doc_第2页
算法设计实验报告.doc_第3页
算法设计实验报告.doc_第4页
算法设计实验报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

算法设计与分析实验报告 指导老师:王喜凤学号:089074106姓名:曹连娇班级:计084班实验一:题目:当问题规模时,快速排序和插入排序各需多少时间(100次平均结果)?写清机器配置,列出五种规模下各自需要的时间。按照下列表格提交:快速排序所需时间(ms)插入排序间(ms)两者相差多少N=1000.0000.0000N=10000,0141.8701.756N=100001.800122.740120.94N=10000023.50014786.35414762.854N=1000000302.000运行环境:运用Visual C+ 6.0编写和执行程序#define N 10000#include#include using namespace std;void q_sort(int a,long low,long 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(lowi-1) q_sort(a,low,i-1); if(j+1high) q_sort(a,j+1,high);void i_sort(int b)long i,j;int x;for(i=1;iN;i+)x=bi;j=i-1;while(xbj)bj+1=bj;j-;bj+1=x;int main()int aN,bN;int j;long i;double qq=0,ii=0;for(j=0;j100;j+)srand(unsigned)time(NULL);for(i=0;iN;i+)ai=rand();bi=ai;clock_t q_start,q_end;clock_t i_start,i_end;double q_time,i_time;i_start=clock();i_sort(b);i_end=clock();i_time=(double)(i_end-i_start);printf(%f,(double)(i_end-i_start);ii=ii+i_time;q_start=clock();q_sort(a,0,N-1);q_end=clock();q_time=(double)(q_end-q_start);qq=qq+q_time;printf(%ld个随机数进行快速排序用时%6.0f毫秒n,N,qq/100);printf(%ld个随机数进行插入排序用时%6.0f毫秒n,N,ii/100);return 0;实验二:下表格式列出其中的五种情况,其中物品个数、背包容量、物品重量和物品价值要随机产生。物品个数N背包容量C物品重量Wi物品价值V最优值最优解所需时间(ms)28(5,10)(1,5)4(0,08)0217(9,8)(6,7)13(1,1)17657615(4,3,4,2,4,8)(2,4,5,2,9,5)21.25(0,1,1,1,1,0.25)16875318(8,4,10)(10,2,9)19(1,0,1)43812716(1,9,1,5,7,1,1)(3,7,3,9,6,10,1)32(1,0,1,1,1,1,1)34969代码如下:#include #include #include #includetime.h struct goodinfo float v; /物品的效益 float w; /物品的重量 float X; int flag; ;/物品信息结构体 void Insertionsort(goodinfo goods,int n) /插入排序,按vi/wi价值收益进行排序 int j,i; for(j=2;jgoodsi.v) goodsi+1=goodsi; i-; goodsi+1=goods0; /按物品效益,重量比值做升序排列 void bag(goodinfo goods,float M,int n) float cu; int i,j; for(i=1;i=n;i+) goodsi.X=0; cu=M; /背包剩余容量 for(i=1;icu)/当该物品重量大与剩余容量跳出 break; goodsi.X=1; cu=cu-goodsi.w;/确定背包新的剩余容量 if(i=n) goodsi.X=cu/goodsi.w;/该物品所要放的量 /*按物品编号做降序排列*/ for(j=2;j=n;j+) goods0=goodsj; i=j-1; while (goods0.flaggoodsi.flag) goodsi+1=goodsi; i-; goodsi+1=goods0; cout最优解为:endl; for(i=1;i=n;i+) cout第i件物品要放:; coutgoodsi.Xendl; void main() clock_t start,end; double ltime; start=clock(); cout|-运用贪心法解背包问题-|endl; int j,n, M; goodinfo *goods;/定义一个指针 while(j) coutn; coutn;coutendl; goods=new struct goodinfo n+1;/ cout背包的最大容量:; M=(float)(rand()%20+1); coutM; coutendl; int i; for(i=1;i=n;i+) goodsi.flag=i; cout第i件物品的重量:; float a=(float)(rand()%10+1); goodsi.w=a; cout a ; coutendl; cout第i件物品的效益:; float b=(float)(rand()%10+1); goodsi.v=b; cout b ;coutendl; goodsi.v=goodsi.v/goodsi.w;/得出物品的效益,重量比 coutendl; Insertionso

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论