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

【学习打卡】第1天 初识JavaScript算法

标签:
JavaScript

课程名称:JavaScript版数据结构与算法

课程章节:第2章 时间/空间复杂度计算

主讲老师:lewis


课程内容:

今天学习的内容包括:

2-1 时间复杂度计算——时间复杂度越小,运行时间越快。

2-2 空间复杂度计算——空间复杂度占用越小,代码越好。


课程收获:

时间复杂度:描述算法的运行时间,详见【图一】

相加:当同时存在两个时间复杂度时,以更大的时间复杂度为准 如:O(1) + O(n) = O(n)

相乘:嵌套循环复杂度相乘如:O(n) * O(n) = O(n²)

代码示例记录如下:

O(1)

let i = 0;
i+=1;

O(n)

for (let i = 0; i < n; i +=1){
    console.log(i);
}

O(1) + O(n) = O(n)

let i = 0;
i += 1;
for (let j = 0; j < n; j += 1){
    console.log(j);
}

O(n) * O(n) = O(n²)

for (let i = 0; i < n; i += 1){
    for (let j = 0; j < n; j += 1){
        console.log(i,j);
    }
}

O(logN)

let i=1;
while (i<n){
    console.log(i);
    i *= 2;
}

通过这些了解到:

时间复杂度排序:O(1) < O(logn) < O(n) < O(n²)

O(1):代码中没有循环,代码本身只执行一次

O(n):代码中有循环,代码会循环n次

当同时存在两个时间复杂度时,以更大的时间复杂度为准,如:O(1) + O(n) = O(n)

如存在嵌套循环,则复杂度相乘,如:O(n) * O(n) = O(n²)



空间复杂度:算法在运行过程中临时占用存储空间大小的量度

一个函数,用大O表示,比如O(1)、O(n)、O(n²)......

代码示例记录如下:

O(1)

let i = 0;
i+=1;

O(n)

const list = [];
for (let i = 0; i <n; i += 1) {
    list.push(i);
}

O(n²)

const matrix = [];
for (let i = 0; i<n; i += 1) {
    matrix.push([]);
    for (let j= 0; j <n; j += 1) {
        matrix[i].push(j);
    }
}



根据这两节内容,初步了解了时间复杂度和空间复杂度对程序的影响,初步了解到要想写出优秀的代码需要把控算法细节。初步了解了算法的魅力。



坚持学习,学习JavaScript算法,提升个人能力,写出优秀的代码,做出优秀的产品。



https://img1.sycdn.imooc.com/62e93dcb000187a319200892.jpg


https://img3.sycdn.imooc.com/62e94577000122ab19200892.jpg





点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

举报

0/150
提交
取消