时间/空间复杂度计算

  • 时间复杂度是什么?
    • O(1)
    • O(n)
    • O(1)+O(n)=O(n)
    • O(n)*O(n)=O(n^2)
    • O(logN)
  • 空间复杂度是什么?
    • O(1)
    • O(n)
    • O(n^2)
  • 思考题

时间复杂度是什么?

一个函数,用大O表示,比如O(1)、O(n)、O(logN)…
定性(大概)描述该算法的运行时间

O(1)

let i = 0;
i += 1

执行了一次

O(n)

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

执行了n次

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^2)

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
}

2的多少次方为n?logN

空间复杂度是什么?

一个函数,用大O表示,比如O(1)、O(n)、O(n^2)…
算法在运行过程中临时占用存储空间大小的量度

O(1)

let i = 0;
i += 1

只声明了单个变量,单个变量内存为1

O(n)

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

给list添加了n个值,相当于占用了n个内存单元

O(n^2)

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

矩阵,行列,二维数组

思考题

1、如果一段代码中有3个循环,它们的循环次数都是n,那么这段代码的时间复杂度是 O(3n) 还是 O(n)?
2、假设每天睡觉前,你都会数2的次方,1、2、4、8……,每次你都数到 n 才睡着,那么你数了几个数?时间复杂度是多少?

(二) 时间/空间复杂度计算相关推荐

  1. 第2章 时间空间复杂度计算

    1时间复杂度计算 时间复杂度是什么? 一个函数,用大O表示,例如:O(1), O(N), O(logN). 定性描述算法的运行时间. 时间复杂度常见图: 案例: O(1) let i = 0 i += ...

  2. 算法时间空间复杂度计算—空间复杂度

    一.空间复杂度定义 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度. 一个算法在计算机存储器上所占用的存储空间,包括程序代码所占用的空间,输入数据所占 ...

  3. 时间和空间复杂度计算

    目录 本章目标 理解时间空间复杂度 计算时间复杂度 计算空间复杂度 计算练习 1.1常见时间复杂度计算举例 例1 例2 例3 例4 例5 1.2常见空间复杂度的计算 例1 例2 例3 本章目标 1.什 ...

  4. 自学php【二】 PHP计算时间加一天

    最近几天在做一个项目,主要是将SQLserver数据到MySQL数据库,一个url跑一次 同步一次昨天的数据,由于很多数据需要同步,所以做了一个操作界面的,一个单纯跑url的 在其中涉及到了对于时间的 ...

  5. Algorithm Master Road:算法的时间/空间复杂度

    很多同学都觉得算法很难,难以入门,难以理解,更难以掌握和运用,其实归根溯源,我们可以把所有的问题都通过枚举法来解决,但是受困于「时间」和「空间」的因素,有的时候并不能枚举所有的情况,所以需要通过精妙的 ...

  6. 排序算法 之四 分类、时间/空间复杂度、如何选择

    写在前面   现在网上关于排序算法的文档不计其数,为什么要写这篇文章呢?主要是因为一些算法虽然在平时有用到,但是从来没有细细整理过,没有个统一.整体的认识.写这篇文章一来是进行一下总结,二来趁机再系统 ...

  7. 数据结构与算法的时间空间复杂度

    提到数据结构与算法就不得不提时间复杂度和空间复杂度,本人看大部分文章介绍都比较晦涩难懂,就想着用简单的代码示例快速让你理解数据结构与算法的时间空间复杂度. 首先,时间复杂度表示的是使用某个数据结构或者 ...

  8. linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...

    获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...

  9. matlab蒙特卡罗方法求体积_实验二-蒙特卡罗方法计算三维体积

    班级: 学号: 姓名: 实验时间: 2014 年 月 日 实验 项目 实验二 蒙特卡罗方法计算三维体积 所属 课程 数学实验 实 验 目 的 了解蒙特卡罗方法的原理,掌握随机数使用技术. 实 验 内 ...

最新文章

  1. TestNG学习随笔
  2. Metasploit Framework(1)基本命令、简单使用
  3. 亿级流量场景下的平滑扩容:TDSQL的水平扩容方案实践
  4. 一般筛法和快速线性筛法求素数 求素数的一点总结
  5. 线性代数应该这样讲(一)
  6. debian查询端口进程_Linux查看端口、进程情况及kill进程
  7. OpenShift Security (4) - 管理集群中的安全漏洞
  8. arm集群服务器_什么样的ARM处理器及内存配置适合用来开发ARM集群服务器?
  9. Maven学习总结(56)—— Maven、Gradle 、 Ant 哪一个构建工具最适合你?
  10. 部署集群linux Oracle VM VirtualBox vagrant
  11. 1046 划拳 (15 分)—PAT (Basic Level) Practice (中文)
  12. 简单php网站的mysql优化小结
  13. PTA题目:顺序表基本操作
  14. YOLO学习笔记4——YOLOV2详解+论文解读
  15. 理财投资还要看贵金属
  16. 让你的系统无懈可击 史上优秀防火墙一览
  17. 蓝牙音频传输格式-AAC
  18. 电脑计算机D盘红格式化不了,电脑D盘无法格式化提示Windows无法格式该驱动器的解决办法...
  19. ADXL345实现功能全面的计步器
  20. ubuntu 20.04 安装安卓app 使用 anbox

热门文章

  1. python网络爬虫抓取图片
  2. 从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数
  3. 安装虚拟机VMware12步骤
  4. 基于 qiankun 的微前端应用实践
  5. Unix网络编程之IO模型
  6. 推荐算法三视角:矩阵,图,时间线
  7. 简述分布式一致性协议(2pc、3pc、paxos、zab)
  8. Python CSV 中查找指定字符串
  9. 记一次反馈,把钉钉客服聊跑了
  10. React 实现一个漂亮的 Table