复杂度分析上如何统计算法执行效率资源消耗.pdfVIP

复杂度分析上如何统计算法执行效率资源消耗.pdf

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

03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

2018-09-26

03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

朗读人:修阳19′42′′|9.04M

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代

码更省空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代

码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。

其实,只要讲到数据结构与算法,就一定离不开时间、空间复杂度分析。而且,我个人认为,复杂

度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。

复杂度分析实在太重要了,因此我准备用两节内容来讲。希望你学完这个内容,无论在任何场

景下,面对任何代码的复杂度分析,你都能做到“庖丁解牛”般游刃有余。

为什么需要复杂度分析?

你可能会有些疑惑,我把代码跑一遍,通过统计、,就能得到算法执行的时间和占用的内存大

小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准

确吗?

首先,我可以肯定地说,你这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给

这种方法起了一个名字,叫事后统计法。但是,这种统计方法有非常大的局限性。

1.测试结果非常依赖测试环境

测试环境中硬件的不同会对测试结果有很大的影响。比如,我们拿同样一段代码,分别用IntelCore

i9处理器和IntelCorei3处理器来运行,不用说,i9处理器要比i3处理器执行的速度快很多。还

有,比如原本在这台机器上a代码执行的速度比b代码要快,等我们换到另一台机器上时,可能会

有截然相反的结果。

2.测试结果受数据规模的影响很大

后面我们会讲排序算法,我们先拿它举个例子。对同一个排序算法,待排序数据的有序度不一样,

排序的执行时间就会有很大的差别。情况下,如果数据已经是有序的,那排序算法不需要做任

何操作,执行时间就会非常短。除此之外,如果测试数据规模太小,测试结果可能无法反应

算法的性能。比如,对于小规模的数据排序,排序可能反倒会比快速排序要快!

所以,我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。这就

是我们今天要讲的时间、空间复杂度分析方法。

大O复杂度表示法

算法的执行效率,粗略地讲,就是算法代码执行的时间。但是,如何在不运行代码的情况下,用“肉

眼”得到一段代码的执行时间呢?

这里有段非常简单的代码,求1,2,3…n的累加和。现在,我就带你一块来估算一下这段代码的执行

时间。

代码

intcal(intn){

intsum0;

inti=1;

for(;i=n;++i)

{sum=sum+i;

}

returnsum;

}

从CPU的角度来看,这段代码的每一行都执行着类似的操作:读数据-运算-写数据。尽管每行代码

对应的CPU执行的个数、执行的时间都不一样,但是,我们这里只是粗略估计,所以可以假设每

行代码执行的时间都一样,为unit_time。在这个假设的基础之上,这段代码的总执行时间是多少

呢?

文档评论(0)

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

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

1亿VIP精品文档

相关文档