亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消