【数据结构和算法】时间复杂度和空间复杂度

时间复杂度简单的说就是一个程序运行所消耗的时间,叫做时间复杂度,我们无法目测

一个程序具体的时间复杂度,但是我们可以估计大概的时间复杂度。

一段好的代码的就根据算法的时间复杂度,即使在大量数据下也能保持高效的运行速

率,这也是我们学习算法的必要性。

2.1时间复杂度表示形式


一般用O()来表示算法的时间复杂度,我们叫做大O记法。

2.1.1规则:

①用常数1取代运行时间中的所有的加法常数。比如,一个程序中有十条输出语句

我们不会记成O(10),而是用O(1)来表示。

②如果最高阶项不是1,那么去掉最高阶阶项,因为我们认为数字在后期影响不大。

如O(8n),则时间复杂度应该为O(n)。

③只保留最高阶项,如O(3n2+6n+2),则时间复杂度为O(n2)

3.1如何计算时间复杂度


计算时间复杂度主要看执行的次数和输入的关系

3.1.1线性阶

顾名思义,就是输入和输出成正比。

for(int i=0;i<n;i++){

sum+=i;

}

当n=1,执行一次,当n=100,执行100次 ,所以当为n时,执行n次,所以时间复杂度为

O(n)

3.1.2平方阶

for(int i=0;i<n;i++){

for(int j=0;j<n;j++){

}

}

外层for循环和内层for循环都是时间复杂度时n外层循环一次,内层循环n次,所以时间复杂度是

O(n^2)。

另一种:

for(int i=0;i<n;i++){

for(int j=0;j<i;j++){

}

}

外层复杂度是n,内层是1+2+…+n-1+n,所以是n(1+n)/2,由大O法得时间复杂度是O(n^2).

3.1.3对数阶

int i=0;n=100;

while(i<n){

i=i*2;

}

满足条件时,程序运行了,先设X个2相乘后大于n,则2^X=n,解得X=log2(n),所以时间

复杂度时O(log2(n)),log以2为底,n为真数。

常见的时间复杂度排序:


O(1)< O(log2(n))< O(n)< O(nlog2(n)< O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n)

一般来说,到了O(n^2)及以上数据量大时运行效率极低,所以数据量大时,应选用更有的算法

三、空间复杂度

=======

简单的说就是程序运行所需要的空间。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)


后记


总结一下这三次面试下来我的经验是:

  1. 一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

  2. 代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

  3. 尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

  4. 多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】免费获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容



s://img-blog.csdnimg.cn/img_convert/ac0b1c2376da47d727e0dc8a77e76478.png)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值