算法设计与分析试验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析试验报告

学生学号 0121010680524 实验课成绩 武汉理工大学 学 生 实 验 报 告 书 实验课程名称 《算法设计与分析》 开 课 学 院 计算机科学与技术学院 指导老师姓名 何 九 周 学 生 姓 名 王 鹏 学生专业班级 软件 1004 2012 — 2013 学年 第 1 学期 实验课程名称: 算法设计与分析 实验项目名称 分治法应用及设计 实验成绩 实验者 王鹏 专业班级 软件1004 组别 同组者 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 实验内容描述(问题域描述) 实验描述: 利用分治法,解决检索和排序中的两个问题,在计算机上实现,同时进行时间复杂性分析。本实验是综合型、设计型实验,在实验中需要综合运用《数据结构》中的递归方法和树的知识;《程序设计》中的数组、条件控制、循环控制和《算法设计与分析》中的分治法、计算时间的渐进表示和算法的时间复杂性分析等等方面的知识。 实验内容: 利用分治法,写一个二分检索的递归算法,并利用任何一种语言,在计算机上实现,同时进行时间复杂性分析。 用分治法,实现对n个元素进行排序的算法,并进行时间复杂性分析。 实验要求: 首先要对实验内容进行描述,用伪代码设计算法,并对算法在最好,最差和平均情况下的时间复杂性进行分析,然后C/C++或JAVA语言编写程序#include stdio.h //比较x和y int compare(int x,int y) { if( x y ) return -1; else if ( x == y) return 0; else return 1; }//二分查找(折半查找)的递归(迭代)算法,返回查找到的值在数组中的位置下标 int BinSearch(int list[],int searchnum,int Left,int Right) { int middle; if(Left = Right){ middle = (Left + Right)/2; printf(middle = %d\n,middle); switch(compare(list[middle],searchnum)){ case -1: return BinSearch(list,searchnum,middle + 1,Right); case 0: return middle; case 1: return BinSearch(list,searchnum,Left,middle - 1); } } } void main() { int list[10] = {1,2,3,4,5,6,7,8,9,10}; int searchnum = 5; int Left = 0; int Right = 9; int num = BinSearch(list,searchnum,Left,Right); printf(返回%d\n,num); } 实验二代码: #include iostream #include cstdlib using namespace std; int merge(int c[],int d[],int l,int m,int r){ int i=l,j=m+1,k=l,q; while(i=mj=r){ if(c[i]=c[j]) d[k++]=c[i++]; else d[k++]=c[j++]; } if(im) for(q=j;q=r;q++) d[k++]=c[q]; if(jr) for(q=i;q=m;q++) d[k++]=c[q]; return 0; } int mergePass(int x[],int y[],int s,int n){ int i=0,j; while(i=n-2*s){//合并大小为S的相邻子段 merge(x,y,i,i+s-1,i+2*s-1); i+=2*s; }//剩下的元素个数少于2s if(i+sn) merge(x,y,i,i+s-1,n-1); else for(j=i;j=n-1;j++) y[j]=x[j]; return 0; }//合并数组 int mergeSort(int a[],int n){ int s=1; int *b=new int[n];//int *b=(int *)malloc(n*sizeof(int));//动态的给b分配n个int类型空间 while(sn){ mergePass(a,b,s

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档