2011级《算法设计与分析》.docVIP

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

《算法设计与分析》 课程考试报告 姓 名: 学 号: 班 别: 任课教师: 黄 海 滨 2013年 06 月 25 日 《算法设计与分析》课程考试要求 本课程考。 数值问题:设x=2,n=30,a0= n,a1= n-1,a3= n-2,…,an-2=2,an-1=1,要求用蛮力算法求解多项式p(x)= a0x0+a1x1+…+an-2 xn-2+an-1 xn-1的值。 算法基本思想;(2分) 蛮力算法根据问题的定义,按照问题的步骤,直截了当地对问题进行求解,借助计算机的运算能力,简单、自然,然而往往又非常有效。 (2)算法描述(可以用流程图、自然语言或伪代码来描述);(3分) 首先定义所要求的数据变量,然后运用一个循环语句对一遍一遍地对语句进行搜索计算,直到最后得出最终结果。 (3)算法实现的C源程序代码;(6分) #include stdio.h #include math.h void main(){ int sum=0; int a,c,x,i; int b=0; a=30; x=2; c=0; for(i=0;i30;i++){ b=a*pow(x,c); sum=sum+b; a=a-1; c=c+1; } printf(sum=%d\n,sum); }(4)程序运行结果的屏幕截图;(6分) 算法分析(可以从算法复杂度、优缺点或改进方法等角度来分析)。(6分) 蛮力算法的应用有通用性|、启发性、实用性、准绳性的优点,但是缺点也很明显就是蛮力算法的效率不是很高。 2.分治算法(25分) 查找问题:输入100个整数,使用分治算法实现折半查找,统计某个整数出现的次数。 (1)算法基本思想;(2分) 这是一种将复杂难解的问题分割为规模和结构相同或相似的子问题,通过对简单问题的求解而达到对原问题的求解的目的的算法设计方法。分治算法能够使原本纷繁复杂的问题变得清晰明朗,而且能够通过将问题的规模变小而降低问题求解的难度。 (2)算法描述(可以用流程图、自然语言或伪代码来描述);(3分) BINARY-SEARCH(A,T) L--0 R---n-1 While l=r Do m--(l+r)/2 If T=A[m] Then return m Else if A[m] Then r--m-1 Else l--m+1 Return-1 (3)算法实现的C源程序代码;(6分) #includestdio.h void main() { int low=0,high=99,x,a[100],i,k; int Search(int low,int high,int x,int a[100]);//变量赋值初始化 printf(输入一百个数:\n); for(i = 0; i 100; i++) scanf(%d,a[i]); printf(输入要查找的数:\n); scanf(%d,x); k=Search(low,high,x,a); printf(%d\n,k); } int Search(int low,int high,int x,int a[100]) { int mid; int k=0,j; while(low=high) { mid=(low+high)/2; if(a[mid]==x) { k++; for(j = 0; j mid; j++) { if(a[j] == x) k++; else continue; } for(j = mid+1 ; j = high; j++) { if(a[j] == x) k++; else continue; } return k; } else if(xa[mid])//顺序查找中,左边的数小于被分开的最右边界,则所找的数//在数组的左半部分,要缩小左部的范围 high=mid-1; else low=mid+1; } return k; } (4)程序运行结果的屏幕截图;(6分) (5)算法分析(可以从算法复杂度、优缺点或改进方法等角度来分析)。(6分) 分治算法将问题分解为了一些更小更容易解决的

文档评论(0)

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

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

1亿VIP精品文档

相关文档