算法分析与设计实验报告_第1页
算法分析与设计实验报告_第2页
算法分析与设计实验报告_第3页
算法分析与设计实验报告_第4页
算法分析与设计实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

算法析设实验报告专班:姓名:学号:指老:

实验归算法的设与实现计算数的非负数次幂(1)设计路对于34

按步骤以析34

=3*32=31131

=3*对于33

按步骤以析33=32;32=3

*3;31=3

*1;分析可得:当n中为数,*)当n中为数,=()2当1一步步行归回算如果位奇,进一乘否则返运结(2)源程代#include〈using;intpower(intx,int){inty;{y=1;}else{,n/2);y=y*;{y=yx;}}return}

main){cout<〈请入个数:;int;〉〉x;cout<〈请输一指Y:;int;〉ify<0){〈”你输有:重输入〈〈endl;cin>〉;}intc;c=power(,y);〈〈〈的”〈y<次幂结是<;})码行果(4)时复度令k,则可以得到f()=k+1=logn+1=O(logn)

基于递归法的入排序(1)设思通过主数来个组首地址数的度然利用递的理当n=0;程返回,执入的归序依次比个的小个的小,据较结将个数插适的置(2)源程代#include<iostream>using;insert(int],intn{int;int;n=n—;(〉0){insert(,n);];—;(〉=0)&[]>b)){]=a[k];k=k-1;}]=b;}}main){inta[100]int;〈请输数A[]的素数n(1<n<100):";〉>n;〈请输数A[的素:";for(int;{〉>a[i]});j=0j〈;j++){〈<a[j]<"”;

};}(3)代运结(4)时复度f)+n-1=f(n*(n-1)/2;算用于递栈工作单数为同一量,时复度实验递归算法实现自然并算法的计与实设思首先讲排的n元分大相的集,后分对两子进排最将排好序子合并所求的排序集

源序码〉#〈iostream>using#define[,low,inthigh{inttemp[max];({intmid=(low+high)/2;inti=low;intintl=low;(,,mid);,mid+1);while(i〈=mid&&j<=high){if]〈[j]){temp[l++]=a[;}else{}}{temp[l++]=a[i++];}(j〈=high{[[j++]}for(i=low;i<=high;i++){a[i]=temp[i];}}}main(){int;int;〈”输元个数"〉〈请输”<<n〈<个元:”;

for(int;i<n;i++){〉}Merger_Sort(a,0n-1)j=0;j〈n;j++){〈]〈"";}〈<endl;}(3代运结)间杂自然规排算的间杂度为O(n)

快速序算法的计与实设思基本思是过趟序要排序数分成立两部分其一分所数据比另外部的有据要小,后按方对两部分据别行速序,个排序过可递进,此达到个据成序列•

源序码#include〈using;intPartition(int],intp,intr){inti=,j=r+1,sub;int=[(){while(a[++i]〈&&jr);[—j](〉=j)suba[i[=;[j]}[=a[j];];returnj}(int[],intr){(p<r){int=Partitiona,QuickSort(,)//左段序QuickSort(a,q+1,r);//对右段序}}int){inta[100];int〈"请入组素数n(0〈n〈”;〉n;

〈"请入组素:”;for(inti=0;i<ni++{〉[i];}QuickSort(a,0,n—1;j=0){[j]〈;}〈endl;}(3)代运结(4)时间杂快速排算在坏情下的运时是O)。果取组的值素为分元素,么速序法的时复度为()。时速序法递深接于。因,速排算的空复度为)

实验贪心算法实现背包问题设计实现(1)设思将前i件物放容为v的包”个问,只虑i件品策(或放),么可转为一个牵前i—件品问。果放i物,么题转化为前i-1件物放容为的包"价为f[i-1][v];果第件物,么题就转为前件品入下容为—w[i]的包”此能得最价就是—1]—再上过入i件物获的值[i]。注意f[v]有意义且当存在一前i件品子,费总和为[]所按照个程推毕,终答案并不定f[N[V],而[][0..V]的大(2)源序码〈〉using;#definen3structthing{floatp;floatw;floatv;};(thinga[]b){inti;for(i=0;〈n;i++){[i].v=a[i]p/a[};〈){j=i+1;j<n;){if(a[i]〈[j]){b;b.v=a[i]。v;。w=a[i]

a[i].p=a[j]。p;a[i。[]。v;[][。[j]。v;[j].w=b。w;}}}}floatfloatM,a[,float[],intb){floatm,;for(int〈n;i++){[i]。p/a[i。[}quick(,n);〈){(a[i]。w<=m{x[im=m-a。w;p=p+a[i]。}else{[];p=p+x];break;}}returnp;}main(){inti;〈"输三物的格〈];〈n){。;}〈"输三物的量"<〈for(i=0;i<n;i++){〉]。}

float;floatx[n]floatp=greedy(m,a,x,n);最佳"〈〈endl;}代运结)间杂背包问算的间杂为(n)单源点最路径题的设与实现(1)设思将图G中所有顶V分两顶集S和T。v为源已确了短径终点并入S合,始只顶点,则是未定源v最路的点合然每次从T集合选S集合中T路径短那点并入集S中并这点集合T删.到集为为

(2)源程代#include〈usingtypedefstructadj_list{int;floatstructadj_list;}#define3.14e38f#defineN(NODEn,u,floatd[],intp[){floattemp;inti,j,t;bool*s[n]NODE*pnodefor(i<n;i++){[]=;[i]falsep[i]=;}!(pnode=)){return;}{[pnode—〉v_num]=pnode〉len;[pnode—>v_num]=u;=}][u]i=1;i〈){temp=MAX_FLOAT_NUM;t=j〈n;j++{(!s[j]&d[j〈temp){t=j;temp=d[j;}}(t==u)//;}[=true;=[。next;while(pnode){!s[pnode->v_num]&&[pnode—〉]〉[]){v_num]=d[t]+pnode—len;

p[pnode>v_num]t;}=pnode-〉next;}}delete}i,intp[){if(p[i]==—1)printWay(p[i],p;cout<<”>"〈char(i+65);}{cout<<"———-———————--——-----———-———--———”〈endl;}intmain{NODEnode[N];float[N];intp[N];intintintiNODE〈请输顶个:;〉;cout<<请输入顶u编号0u<=〈<n<〈"):cin>>u;—cout<<”请输入各点到其他点的距离(输入顶编号编号输入表示结束):"〈;i=0;i<n;i++){cout〈<”顶"<<char)〈<:";]=*(NODE)//创建结nodei]v_num=i;]。=0nextNULL;while(cin〉&&v>0){=newNODE;〉v_num;〉〉len);pnode—=[i].next;]。=;}}

dijkstra(node,n,u,d,p);println()for(i=0;〈n;i++)if(u==i||di])continue;//cout<〈char(u+65)〈<"离<<char〈"点短离”<〈d[]〈cout<〈路径”〈(u+65);printWay(i,;cout<〈;println()}return}(3代运结)间杂算法的间主要耗在将

温馨提示

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

评论

0/150

提交评论