为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第2天 程序员必须掌握算法复杂度?

第一模块:


课程名称:2周刷完100道前端优质面试真题


课程章节:第二章第三节


主讲老师:双越


第二模块:


课程内容概述


一. 什么是复杂度?


程序执行时需要的计算量和内存空间(和代码是否简洁无关).


复杂度是数量级(方便记忆/推广),不是具体的数字


一般是针对一个具体的算法,而非一个完整的系统.


表格如下:


https://img1.sycdn.imooc.com/631933840001840e05540337.jpg


O(1): 一次就够(数量级)


O(n): 和传输的数据量一样(数量级)


O(n^2):数据量的平方(数量级)


O(logn): 数据量的对数(数量级)


O(n*logn): 数据量*数据量的对数(数量级)


代码演示:

O(1):
function fn(obj={}){
    return obj.a+obj.b+obj.c;
}
O(n):
function fn(arr=[]){
    for(let i=0;i<arr.length;i++){
        console.info(arr[i]);
    }
}
O(n^2):
function fn(arr=[]){
    for(let i=0;i<arr.length;i++){
      for(let j=0;j<arr.length;j++){
          console.info(arr[j]);
      }
    }
}


二.空间复杂度


概念:程序运行时需要的内存空间


O(1):有限,可数的空间(数量级)


O(n):和输入的数据量相同的空间(数量级)


其他的不常见,只做这2个的拓展


https://img3.sycdn.imooc.com/631936280001840e05540337.jpg

O(1):
const a = arr[1]
O(n):
const arr2 = [];
for(let i=0;i<arr.length;i++){
    arr2[i] = arr[i]+10;
    ......
}


程序员必须掌握算法复杂度


如果达到O(n^2),算法基本不可用级别


重点:


算法复杂度是学习算法的基础,非常重要,不理解就先背诵


复杂度是数量级,用O(...)表示,内部是一个函数表达式


前端开发:重时间 轻空间



第三模块:


如果你没有复杂度的概念和敏感度,写程序是非常危险的


例如,代码工程测试正常,蛋数量大了,程序就会崩溃


对于前端开发,尤其是时间复杂度


第四模块:


https://img1.sycdn.imooc.com/6319447f0001557028801800.jpg

https://img3.sycdn.imooc.com/6319447f0001ee2a28801800.jpg

https://img3.sycdn.imooc.com/6319447f0001fcc628801800.jpg






点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消