(算法复习.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
(算法复习

1、 算法的性质包括输入、输出、确定性、有穷性、可行性。 2、算法的三要素 1、操作2、控制结构3、数据结构. 3、算法具有以下5个属性:   有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。  确定性:算法中每一条指令必须有确切的含义。不存在二义性。只有一个入口和一个出口 可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。 输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。 输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。 4、 二分搜索算法是利用实现的算法#includestdio.h void main() { int i,j,a[5][5]; for(i=0;i5;i++) for(j=0;j5;j++) { if(i==j||i+j==4) a[i][j]=0; if(iji+j4) a[i][j]=1; if(jii+j4) a[i][j]=2; if(iji+j4) a[i][j]=3; if(iji+j4) a[i][j]=4; } for(i=0;i5;i++) { for(j=0;j5;j++) printf(%5d,a[i][j]); printf(\n); }} 6、给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x,返回其在数组中的位置,如果未找到返回-1。写出二分搜索的算法,并分析其时间复杂度。 templateclass Type int BinarySearch(Type a[], const Type x, int n) {//在a[0:n]中搜索x,找到x时返回其在数组中的位置,否则返回-1 Int left=0; int right=n-1; While (left=right){ int middle=(left+right)/2; if (x==a[middle]) return middle; if (xa[middle]) left=middle+1; else right=middle-1; } Return -1; } 算法复杂度分析: 每执行一次算法的while循环, 待搜索数组的大小减少一半。因此,在最坏情况下,while循环被执行了O(logn) 次。循环体内运算需要O(1) 时间,因此整个算法在最坏情况下的计算时间复杂性为O(logn) 。 7、使用快速排序算法对下列数据进行排序: {8 3 2 9 7 1 5 4}。请列出第一趟分割过程。{4,3,2,5,7,1,8,9} templateclass Type int Partition (Type a[], int p, int r) { int i = p+1, j = r; Type x=a[p]; // 将 x的元素交换到左边区域 // 将 x的元素交换到右边区域 while (true) { while (a[i] x) {i++;} while (a[j] x){j--;} if (i = j) break; Swap(a[i], a[j]); } a[p] = a[j]; a[j] = x; return j; } 8、 动态规划算法的基本思想就将待求问题化为若干子问题 先求解子问题,然后从这些子问题的解得到原问题的解。 9、动态规划的基本思想 动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。 10、 设计动态规划算法的4个步骤: 找出最优解的性质,并刻画其结构特征。 递推定义最优解。 以自底向上的方式或自顶上下的记忆方法计算最优解。 根据计算最优值得到的信息,构造问题的最优解 。 11、 分治法的基本思想是什么? 答:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 12、 分治法所能解决的问题一般具有以下几个特征:

文档评论(0)

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

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

1亿VIP精品文档

相关文档