时间复杂度如何计算

【初识数据结构】手把手教会你时间复杂度计算方法 时间复杂度计算的是一个法中的基本操作的执行次数,它的计算遵循大O的渐进表示法 阅读详情

算法时间复杂度:

时间复杂度描述的是方法执行的渐进时间复杂度(随着数据的增加的一种时间变化趋势)

用T(n)=O(f(n)) 表示。其中 f(n)表示当数据量为n的时候这个方法中的代码的执行次数总和

 

代码1

int i = 1; 
int j = 2; 
++i;
j++; 
int m = i + j;

如上面代码所示

代码没有循环 上面的代码执行次数与数据量无关,永远都是5则f(n)=5

则这段代码的时间复杂度T(n)=O(f(n))=O(5)可以简化为O(1)

为什么可以这么去简化呢,因为大O符号表示法并不是用于来真实代表算法的执行时间的,它是用来表示代码执行时间的增长变化趋势的

 

代码2

for(i=1; i<=n; ++i) 
{
  j = i; 
  j++; 
}

如上面代码所示

第1行代码执行次数为n[循环判断n次] 第3行代码执行次数为n[因为在for循环中],同理第4行代码执行次数也为n

则这段代码的执行总次数f(n)=n+n+n=3n

则时间复杂度T(n)=O(f(n))=O(3n) 可以简化为O(n)

因为当数据量无穷大的时候,常量就没有意义了,倍数3意义不大。因此直接简化为T(n) = O(n) 就可以了

 

代码3

int i = 1; 
while(i<n) 
{
  i = i * 2; 
}

如上面代码所示

第1行代码执行次数为1

第2行代码与第4行执行的次数都为 i:当2的i次方大于等于n时循环结束,则2^i>=n,则执行次数 i=log2^n

则这段代码的执行次数f(n)=1+log2^n+log2^n=2log2^n+1

则T(n)=O(f(n))=O(2log2^n+1)=O(log2^n)=O(logn)

因为当数据量无穷大的时候,常量1就没有意义了,倍数2也意义不大。因此直接简化为T(n) = O(log2^n) =O(logn)就可以了 底数2可以直接省略了,为什么可以省略底数如下所示:

uploading.4e448015.gif正在上传…重新上传取消

 

 

 

 

假设有底数为2和3的两个对数函数,如上图。当X取N(数据规模)时,求所对应的时间复杂度得比值,即对数函数对应的y值,用来衡量对数底数对时间复杂度的影响。

 

比值为log2 N / log3 N,运用换底公式后得:(lnN/ln2) / (lnN/ln3) = ln3 / ln2,ln为自然对数,显然这是个常数,与变量N无关,可以直接省略。

 

时间复杂度描述的是随着数据增加的时间变化趋势。如上图,2跟3不同底数对应的时间复杂度的倍数关系为常数,不会随着底数的不同而不同,因此可以将不同底数的对数函数所代表的时间复杂度,当作是同一类复杂度处理,即抽象成一类问题。

 

代码4

for(m=1; m<n; m++) 
{ 
  i = 1; 
  while(i<n) {
    i = i * 2; 
  } 
}

如上代码所示

第1行执行次数为n

第3行为n

第4行为n log2^n(循环里面套循环)

低5行为n log2^n(循环里面套循环)

则总的执行次数为n( 2nlog2^n+1)=O(nlog2^n)=O(nlogn)

 

如何计算时间复杂度 Timecomplexity)是一个函数,它定性描述该法的运行时间。这是一个代表法输入值的字符串的长度的函数. 时间复杂度常用大O表述,不包括这个函数的低阶项和首项系数。个人理解为。 阅读详情

相关推荐

平均时间复杂度计算

Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”和“内容共创官”,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。

weixin_74300052的博客 1579

代码时间复杂度计算

时间复杂度公示: 下面分析一段代码: 2、3、4行每一行都需要1个单位的执行时间,5、6行循环了N边,需要2N个单位时间,7、8行执行了n^2遍,所以一共需要执行时间:(2N ^2 + 2N + 3 )*单位时间。 我们用T(n) 表示,O表示T(n)与f(n)成正比(单位时间),所以表达式可以写成:T(n) = O(2N ^2 + 2N + 3 ) ,这就是大O时间复杂度表示法,由于N无穷大,所以只需要表示最大量级即可,即:T(n) = O(N ^2 ) 时间复杂度分析: 1、只关注循环执行次数最多

weixin_40966030的博客 9591

法的时间复杂度计算

法的时间复杂度计算一、时间复杂度的两个概念:1、时间的频度一个法中的语句执行次数称为语句频度或时间频度,记为T(n)。2、时间复杂度在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。一般情况下,法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使

锅大侠 1895

时间复杂度(分析程序效率)

     关于时间复杂度,参看http://blog.csdn.net/zhuchzhi/archive/2007/03/14/1529514.aspx      总结如下:      1、如果函数中没有n,也就是语句执行的次数是恒定的,则可知时间复杂度为O(1)      2、如果函数中有n,但是不知道执行的次数,可以这样做:假设执行次数为m,经过m次执行后条件参数变为x1且常数增长,则O(x)比O(y)增长得快些,即高效性:O(x)

Simple life 3804

详解时间复杂度计算公式(附例题细致讲解过程)

这几天开始刷力扣上面的法题,有些题目上面限制时间复杂度和空间复杂度,题目虽然写出来了,但是很没底。印象里数据结构老师讲过一点,沉睡的记忆苏醒了。只记得一个时间复杂度是O(n),空间复杂度是S(n)。for循环常常是O(n),具体是怎么的不清楚。所以在看了相关的视频教学后,总结一下时间复杂度计算公式,希望能给大家的学习带来帮助!

weixin_63866037的博客 8万+

时间复杂度计算(含例题细致讲解)

本文介绍了时间复杂度的基本概念,强调它是衡量法效率的重要参数。通过大O的渐进表示法解释了如何计算时间复杂度,并通过实例说明了如何忽略低阶项和常数。此外,还提到了空间复杂度的重要性。

A Charmer 的博客 1万+

如何计算时间复杂度?

关于时间复杂度   法的时间复杂度是用来描述一个法的运行时间,时间复杂度通常 T(n) = O(f(n)) 来表示;我们用 n 来表示一个 问题的规模, T(n) 这个函数就表示法的 时间复杂度 ;O(f(n)) 表示的是法的 向上渐近时间复杂度 ; 至于向下渐近时间复杂度 Ω(ƒ(n)) 和平均渐进时间复杂度 Θ(ƒ(n)) ,时间复杂度一般都是采用向上渐近表示。 计算规则 1. 顺...

呆呆papa的博客 3万+

时间复杂度常见的计算

前言一、时间复杂度是什么?二、时间复杂度计算1.基本步骤2.常见的时间复杂度总结对于判断一段代码的好坏,取决于该代码运行的时间与占用的空间,也就是时间复杂度与空间复杂度,本章就先讲一下时间复杂度,主要包含常见的时间复杂度计算。总而言之,该篇文章就是简单的介绍了一下时间复杂度,仅仅是自己的粗鄙的看法,本人也是第一次接触这些东西,就想着发一篇文章来加深一下自己的理解,新人小白一枚,大佬勿喷,有理解错的地方希望能给小弟提点一下。

xihongshi547的博客 2939

时间复杂度详解2——时间复杂度计算

对于两层循环时间复杂度计算,我们完全可以将这个循环视作一个单层循环,然后它的循环体是另一个循环。这样子计算时间复杂度就很简单了实际上无论多少层循环,我们只需一层一层分开来计算就行了,最后只需将最内层的语句的执行次数全加起来就好了例一: 要计算这个嵌套循环的时间复杂度,我们首先要分析每个循环的执行次数。外层循环 从 到 ,因此会执行 次。对于每一个 的值,内层循环 的执行次数从 到 。具体来说:因此,内层循环的总执行次数是 ,这是一个等差数列的和,其和为 (\frac{(n+1)(n+2)

2301_80224556的博客 5787

时间复杂度计算

一.什么是时间复杂度 二.时间复杂度的比较 三.时间复杂度计算 四.时间复杂度计算实例

m0_74343375的博客 4090

时间复杂度计算方法

在学习数据结构阶段,认识的第一个概念应该就是时间复杂度了。时间复杂度是一个数学上的一个函数式,该函数式计算的基本执行次数,就是时间复杂度。通俗的说,时间复杂度就是衡量这个法的运行时间长短,效率高低的一个手段,它是通过粗略的计算法的执行次数来衡量的。那时间复杂度该怎么计算呢?

m0_68190153的博客 1301

Java数据结构基础

一、概论 数据结构+法=程序。 1、数据结构分为:数据,数据元素和数据项。数据结构指数据元素之间存在的关系。2、法:有穷性,确定性,输入,输出,可行性。 一个简单语句的时间复杂度为O(1)。 int count=0;  一个循环的时间复杂度为O(n)。 int n=8, count=0; for (int i=1; i     count++; 时间复杂度

qq_36864672的博客 737

关于时间复杂度的简单归纳与总结

与一层循环锚定次数t不同的是,二层循环锚定的是最外层循环的i值(本质其实也是次数)而最后得出结论必然有两个公式,一个是规律的式子,一个是停止条件的式子。综上,i=n时,循环的执行次数=2+4+6+8+...+2n=需要注意的是,时间复杂度本质是在求t(次数)与n之间的关系。i值对应的下一层的循环次数=2、4、6、8、...、2n。一层循环(需要注意的是,不要想当然的直接看时间负责度)t(循环次数) = 0、1、2、3、...i(当前循环次数对应的i值)=综上,i值规律为:i=而循环停止条件为i=1。

m0_59208804的博客 618

时间复杂度和空间复杂度(例题)

解析:法中基本操作重复执行的次数是问题规模n的某个函数f(n),法的时间度量记作T(n)=O(f(n)),它表述随问题规模n的增大,法执行时间的增长率和f(n)的增长率相同,称作时间复杂度。A2的法可以分为两个部分,第一个部分是10次A1法,那么执行时间是一个常量,第二部分时间复杂度为。+n)/2=n(n+1)/2次,则该程序的时间复杂度为。第二步:列出表达式;,执行时间也是一个常量,两部分之和的执行时间仍然为常量,所以时间复杂度为。则总共时间为2(n+t),所以时间复杂度为O(n+t)

qq_58098264的博客 1924
上一篇: java中Vector.add()方法底层源码跟踪
下一篇: Java通过递归方式实现数的阶乘,斐波那契数列与汉诺塔
奋斗小唉梯
博客等级 码龄10年 1粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值