1时间复杂度计算

时间复杂度是什么?

一个函数,用大O表示,例如:O(1), O(N), O(logN).
定性描述算法的运行时间。
时间复杂度常见图:

案例:
O(1)

let i = 0
i += 1
解释:每次执行这段代码,这段代码永远只会被执行一次,里面没有循环

O(n):
解释:在每次循环的时候都打印一次i,中间的for循环里面的代码被执行了n次,随着i的增大的增大,n也会增大

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

计算下面这段代码的时间复杂度:

相加:

如果两个时间复杂度,先后排列,我们就把各自的时间复杂度相加,而且,我们要取增长时间更快的时间复杂度,
O(1) + O(n) ,整体的时间复杂度是:O(n),因为,n足够大的时候,这个1可以忽略不计了。

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

相乘

案例:
O(n) * O(n) = O(n ^ 2)
在for循环里面嵌套了另一个for循环,这个时候时间复杂度就是相乘。

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

案例:
O(logN):

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

2.空间复杂度计算

空间复杂度计算是什么?

一个函数,用大O表示,例如:O(1), O(N), O(n ^ 2).
算法在运行过程中临时占用存储空间大小的度量。代码占用的存储空间,占用的存储空间越小越好。

案例:
O(1)
单个变量占用的内存看空间永远是1。永远是恒定的。

let i = 0;
i += 1

案例:
O(N):因为声明了一个list数组,在循环的时候向数组中添加值,它们相当于占用了n和内存,所以它的空间复杂度是O(N)

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

案例:
O(n ^ 2):其实就是一个矩阵,矩阵说白了其实就是前端经常提的行,列,栅格布局。一行里面有几列。矩阵的本质就是一个二维数据,它存储了n的2次方的变量,所以这段代码的空间复杂度是:O(n ^ 2)

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

第2章 时间空间复杂度计算相关推荐

  1. (二) 时间/空间复杂度计算

    时间/空间复杂度计算 时间复杂度是什么? 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) 思考 ...

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

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

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

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

  4. 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...

    第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...

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

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

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

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

  7. 《FLUENT 14.0超级学习手册》——第1章 流体力学与计算流体力学基础1.1 流体力学基础...

    本节书摘来自异步社区<FLUENT 14.0超级学习手册>一书中的第1章,第1.1节,作者: 唐家鹏 更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 流体 ...

  8. No.044<软考>《(高项)备考大全》【第27章】运筹学计算(典型考题思路讲解)

    [第27章]运筹学计算(典型考题思路讲解) 1 章节概述 1.1 运筹学计算涉及到的题型 2 最优的函数值 3 线性规划 题1 题2 题3 4 动态规划 投资收益最大的问题 5 最小生成树 题1 题2 ...

  9. 【数据结构起航】:衡量算法的好坏--时间空间复杂度

    时间复杂度和空间复杂度 文章目录 时间复杂度和空间复杂度 1.算法效率 1.1算法复杂度 1.2复杂度在OJ里的应用 2.时间复杂度 2.1时间复杂度的概率 2.2大O渐进表示法 推导大O阶方法: 2 ...

最新文章

  1. 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动6
  2. Mybatis-Plus实战中的几个条件构造器Wrapper用法
  3. Sublime Text开发Quick-Cocos2d-x环境搭建(Mac)
  4. activemq启动异常
  5. tp5.0行为的用法,可以存入json数据,方便读取数据。
  6. python sendline_python Pexpect模块的使用
  7. C#LeetCode刷题之#15-三数之和(3Sum)
  8. 05-Elasticsearch官网译文(1)
  9. navicat设置唯一键——unique
  10. 一张图看透办公网安全
  11. android通讯录加密,一种手机通讯录加解密方式
  12. 加密php大马,webshell加密-加密你的大马
  13. Python:jieba库的介绍与使用
  14. Android 免root 备份数据,真正免root的完美备份详细使用教程
  15. mysql 求季度产量平均值
  16. 禁用 SQL 游标,告诉你外面听不到的原因【内含福利】
  17. 冒泡排序,快速排序,归并排序,插入排序,希尔排序,堆排序,计数排序,桶排序,基数排序...
  18. Linux下的exec系统调用详解
  19. 计算机如何打开office,win10电脑没有office软件如何打开ppt文档
  20. 应用程序图标_如何制作完美的应用程序图标

热门文章

  1. 大学计算机专业绩点在3.5算好,大学平均绩点3.5算差吗 算什么水平
  2. 3D动画演示 | 步进电机内部结构与工作原理
  3. 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】
  4. 基于Spring等框架的会议管理系统
  5. KeePass密码管理工具以及中文包安装
  6. TP框架alert中文乱码的解决方法
  7. linux tomcat 启动 无法访问,Linux下 Tomcat 配置启动成功但是无法访问网页的问题【2019-09-25】...
  8. Redis集群搭建(基于6.2.6版本)
  9. mysql创建用户表单_mysql创建用户并赋权
  10. 【演示工具】Focusky教程 | 添加“关于”信息