算法时间复杂度计算示例

算法时间复杂度计算示例

ID:39283087

大小:65.51 KB

页数:5页

时间:2019-06-29

算法时间复杂度计算示例_第1页
算法时间复杂度计算示例_第2页
算法时间复杂度计算示例_第3页
算法时间复杂度计算示例_第4页
算法时间复杂度计算示例_第5页
资源描述:

《算法时间复杂度计算示例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基本计算步骤 示例一: (1)intnum1,num2;(2)for(inti=0;i

2、忽略掉T(n)中的常量、低次幂和最高次幂的系数,得到f(n)=n*log2n{可省略:lim(T(n)/f(n))=(2+4n+3n*log2n)/(n*log2n)          =2*(1/n)*(1/log2n)+4*(1/log2n)+3当n趋向于无穷大,1/n趋向于0,1/log2n趋向于0,极限等于3。}T(n)=O(n*log2n)简化的计算步骤 再来分析一下,可以看出,决定算法复杂度的是执行次数最多的语句,这里是num2+=num1,一般也是最内循环的语句。并且,通常将求解极限是否为常量也省略掉?于是,以上步骤可以简化为: 1.找到执行次数最多的语句 2.

3、计算语句执行次数的数量级3.用大O来表示结果 继续以上述算法为例,进行分析:1.执行次数最多的语句为num2+=num12.T(n)=n*log2nf(n)=n*log2n3.//lim(T(n)/f(n))=1T(n)=O(n*log2n) --------------------------------------------------------------------------------一些补充说明 最坏时间复杂度   算法的时间复杂度不仅与语句频度有关,还与问题规模及输入实例中各元素的取值有关。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。这就保

4、证了算法的运行时间不会比任何更长。求数量级 即求对数值(log),默认底数为10,简单来说就是“一个数用标准科学计数法表示后,10的指数”。例如,5000=5x103(log5000=3),数量级为3。另外,一个未知数的数量级为其最接近的数量级,即最大可能的数量级。复杂度与时间效率的关系:c

5、--------------------------

6、--------------------------

7、-------------

8、     较好          一般       较差---------

9、-----------------------------------------------------------------------------------------复杂情况的分析 以上都是对于单个嵌套循环的情况进行分析,但实际上还可能有其他的情况,下面将例举说明。1.并列循环的复杂度分析 将各个嵌套循环的时间复杂度相加。例如:  for(i=1;i<=n;i++)    x++;  for(i=1;i<=n;i++)    for(j=1;j<=n;j++)      x++;解:第一个for循环T(n)=nf(n)=n时间复杂度为Ο(n)第二个for循环T(n

10、)=n2f(n)=n2时间复杂度为Ο(n2)整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。2.函数调用的复杂度分析 例如:publicvoidprintsum(intcount){  intsum=1;  for(inti=0;i

11、算法进行优化,改为:publicvoidprintsum(intcount){  intsum=1;  sum=count*(count+1)/2;   System.out.print(sum);}这样算法的时间复杂度将由原来的O(n)降为O(1),大大地提高了算法的性能。 3.混合情况(多个方法调用与循环)的复杂度分析 例如:publicvoidsuixiangMethod(intn){  printsum(n);//1.1  for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。