文正学院数据结构期末复习.pptVIP

  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文档。上传文档
查看更多
文正学院数据结构期末复习 算法满足以下性质: (1)输入性(2)输出性 (3)有限性 (4)确定性 (5)可执行性 算法设计满足以下目标: (1)正确性 (2)可读性 (3)健壮性 (4)高时间效率 (5)高空间效率 算法的时间复杂度计算方法 常见的时间复杂度表示: O(1),O(n),O(n2) ,O(n3),O(lbn) ,O(lgn) 算法时间复杂度定义:T(n)=O(f(n)),当且仅当存在正常数c和n0,对所有的n(n≥ n0)满足T(n)≤c×f(n) 。T(n)为算法的基本语句执行次数,称为时间复杂度,随n增大与f(n)增长接近相同,级,用O(f(n))表示其复杂度即可称同一个数量。 推导大O阶的方法: (1)用常数1取代运行时间中的所有加法常数。 (2)在修改后的运行次数函数中,只保留最高阶项。 (3)如果最高阶项在且不是1,则去除与这个项相乘的常数 最后得到的结果就是大O阶 例1 求和算法,求1+2+3………..+99+100=5050。 int i,sum=0,n=100; //执行了1次 for(i=1;i=n;i++) //执行n+1次 { sum=sum+i; //执行n次 } printf(“%d”,sum); //执行了1次 该算法一共执行了1+n+1+n+1=2n+3次 在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数: 该算法的时间复杂度为 T(n)=O(n) 称为线性阶 注意:分析这类算法的复杂度关键是分析循环结构的运行情况 例2 求和算法,求1+2+3………..+99+100=5050。 int sum=0,n=100; //执行了1次 sum=(1+n)*n/2 //执行1次 printf(“%d”,sum); //执行了1次 该算法一共执行了1+1+1=3次 在求时间复杂度的时候只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数: 该算法的时间复杂度为 T(n)=O(1) 称为常数阶 注意:不管这个常数是多少,我们都记做O(1) ,而不是O(3)。 例3 求和算法,求1+2+3………..+99+100+…….= int i,j,x=0,sum=0,n=100; //执行了1次 for(i=1;i=n;i++) { for(j=1;j=n;j++) {x++; //执行n*n次 sum=sum+x; } } printf(“%d”,sum); //执行了1次 在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数: 该算法的时间复杂度为 T(n)=O(n2) 称为平方阶 注意:循环的时间复杂度等于循环体的复杂度乘以该循环的次数 例1-3 设数组a和b在前边部分已赋值,求如下两个n阶矩阵相乘运算算法的时间复杂度。 for(i=0;in;i++) for(j=0;jn;j++)

文档评论(0)

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

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

1亿VIP精品文档

相关文档