计算机算法基础-修改.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  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)能行性(3)输入(4)输出(5)有穷性 算法与计算过程的区别:凡是算法,都必须满足以上五条特性。只满足前四条特性的一组规则不能称为算法,只能叫做计算过程。 制定一个算法必经的阶段:设计、确认、分析、编码、检查、调试、计时 学习算法应该涉及的内容:(1)如何设计算法(2)如何表示算法(3)如何确认算法(4)如何分析算法(5)如何测试程序 时空分布图是用各种给定的数据执行调试认为是正确的程序,并测定为计算出结果所花去的时间和空间,以印证以前所作的分析是否正确和指出实现最优化的有效逻辑位置。 算法分析方式分类:事前分析和事后测试。事前分析求出该算法的一个时间限界函数(它是一些有关参数的函数)。事后测试收集此算法的执行时间和实际占用空间的统计资料。 4页?下标?上界:如果存在两个正常数c和n0,对于所有的n=n0,有 |f(n)|≤c|g(n)|则记作f(n)=O(g(n)) 6页? 下标?下界:如果存在两个正常数c和n0,对于所有的nn0,有 |f(n)|≥c|g(n)| 则记作f(n)=Ω(g(n)) 6页?下标?确界:如果存在正常数c1,c2和n0,对于所有的nn0,有c1|g(n)|≤|f(n)|≤c2|g(n)| 则记作f(n)= Θ(g(n)) 计算时间的多项式时间算法关系: 数量级O(1)O(logn)O(n)O(nlogn)O(n2)O(n3) ?上标?5页 指数级O(2 n)O(n!) O(nn) ?6页常用整数求和公式 算法1:求n项的最大元素 procedure MAX(A,n,j) //j,使A(j)是A(1:n)中的最大元素,n0// xmax←A(1);j←1 for i←2 to n do if A(i)xmax then xmax ←A(i);j ←i;endif repeat end MAX 假定A(1:n)是实数数组,这个过程的完整说明如下: procedure MAX(A,n,j) global real xmax;parameters integer j,n;real A(1:n)local integer i; 栈和队列是两种特殊的有序表。栈是所有的插入和删除都在栈顶的表的一端进行。而队列的所有插入只能在尾总的一端进行,所有的删除只能在前部的另一端进行。栈是一个后进先出LIFO表。队列的运算要求第一个插入队中的元素也第一个被移出,是一个先进先出FIFO表。 栈和队列表示方法:一种是用一个一维数组表示,另一种是使用链接表表示。 ?下标? 树是一个或多个结点的有限集合,它使得:①有一个特别指定的称作根的结点;②剩下的结点被分成m≥0个不相交的集合T1,T1,m≥0个不相交树的集合。若去掉树的根,就得到一个森林。 层又叫级,设根是1级,若某结点在p级,则它的儿子在p+1级。一棵树中结点的最大级数定义为该树的高度或深度。 二元树是结点的有限集合,它或者为空,或者由一个根和两棵树(称之为左子树、右子树)的不相交的二元树所组成。 二元树特性:任何一个结点至多只能有两个儿子,即不存在度大于2的结点;另外,二元树的子树是有次序之分的,即分为左子树和右子树,而树的子树实际上无次序之分;再者,二元树允许有0个结点,而一棵树至少要有一个结点。 完全二元树:一棵有n个结点深度为k的二元树,当它的结点相当于深度为k的满二元树中编号为1到n的结点时,则称此二元树是完全的。 图G由称之为结点V和边E的两个集合所组成。 顺序表示使用n行和n列的方阵表,其中n是结点数,这个表称为邻接矩阵。 邻接链表表示是由n个表组成的,每个结点i有一个表,这个表由i所邻接的那些结点所组成。 eg1.3:斐波那契序列1,1,2,3,5,8,13,21,34,…的定义为F0=F1=1 Fi= Fi -1+F i -2 i1 算法1.7求斐波那契数 procedure F(n) //返回第n个斐波那契数 // inteqer n if n≤1 then return(1) else return(F(n-1)+F(n-2)) endif end F eg1.5:已知元素x,判断x是否在A(1:n)中。 算法1.9 在A(1:n)中检索x procedure SEARCH(i) //如果在A(1:n)中有一元素A(k)=x,则将其第一次出现的下标k返回,否则返回零// global n,xn) case :in:return(0) :A(i)=x:return(i) :else:return(SEARCH(i+1)) end

文档评论(0)

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

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

1亿VIP精品文档

相关文档