第2章 时间空间复杂度计算
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章 时间空间复杂度计算相关推荐
- (二) 时间/空间复杂度计算
时间/空间复杂度计算 时间复杂度是什么? 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) 思考 ...
- 算法时间空间复杂度计算—空间复杂度
一.空间复杂度定义 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度. 一个算法在计算机存储器上所占用的存储空间,包括程序代码所占用的空间,输入数据所占 ...
- 时间和空间复杂度计算
目录 本章目标 理解时间空间复杂度 计算时间复杂度 计算空间复杂度 计算练习 1.1常见时间复杂度计算举例 例1 例2 例3 例4 例5 1.2常见空间复杂度的计算 例1 例2 例3 本章目标 1.什 ...
- 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...
第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...
- 排序算法 之四 分类、时间/空间复杂度、如何选择
写在前面 现在网上关于排序算法的文档不计其数,为什么要写这篇文章呢?主要是因为一些算法虽然在平时有用到,但是从来没有细细整理过,没有个统一.整体的认识.写这篇文章一来是进行一下总结,二来趁机再系统 ...
- Algorithm Master Road:算法的时间/空间复杂度
很多同学都觉得算法很难,难以入门,难以理解,更难以掌握和运用,其实归根溯源,我们可以把所有的问题都通过枚举法来解决,但是受困于「时间」和「空间」的因素,有的时候并不能枚举所有的情况,所以需要通过精妙的 ...
- 《FLUENT 14.0超级学习手册》——第1章 流体力学与计算流体力学基础1.1 流体力学基础...
本节书摘来自异步社区<FLUENT 14.0超级学习手册>一书中的第1章,第1.1节,作者: 唐家鹏 更多章节内容可以访问云栖社区"异步社区"公众号查看. 第1章 流体 ...
- No.044<软考>《(高项)备考大全》【第27章】运筹学计算(典型考题思路讲解)
[第27章]运筹学计算(典型考题思路讲解) 1 章节概述 1.1 运筹学计算涉及到的题型 2 最优的函数值 3 线性规划 题1 题2 题3 4 动态规划 投资收益最大的问题 5 最小生成树 题1 题2 ...
- 【数据结构起航】:衡量算法的好坏--时间空间复杂度
时间复杂度和空间复杂度 文章目录 时间复杂度和空间复杂度 1.算法效率 1.1算法复杂度 1.2复杂度在OJ里的应用 2.时间复杂度 2.1时间复杂度的概率 2.2大O渐进表示法 推导大O阶方法: 2 ...
最新文章
- 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动6
- Mybatis-Plus实战中的几个条件构造器Wrapper用法
- Sublime Text开发Quick-Cocos2d-x环境搭建(Mac)
- activemq启动异常
- tp5.0行为的用法,可以存入json数据,方便读取数据。
- python sendline_python Pexpect模块的使用
- C#LeetCode刷题之#15-三数之和(3Sum)
- 05-Elasticsearch官网译文(1)
- navicat设置唯一键——unique
- 一张图看透办公网安全
- android通讯录加密,一种手机通讯录加解密方式
- 加密php大马,webshell加密-加密你的大马
- Python:jieba库的介绍与使用
- Android 免root 备份数据,真正免root的完美备份详细使用教程
- mysql 求季度产量平均值
- 禁用 SQL 游标,告诉你外面听不到的原因【内含福利】
- 冒泡排序,快速排序,归并排序,插入排序,希尔排序,堆排序,计数排序,桶排序,基数排序...
- Linux下的exec系统调用详解
- 计算机如何打开office,win10电脑没有office软件如何打开ppt文档
- 应用程序图标_如何制作完美的应用程序图标
热门文章
- 大学计算机专业绩点在3.5算好,大学平均绩点3.5算差吗 算什么水平
- 3D动画演示 | 步进电机内部结构与工作原理
- 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】
- 基于Spring等框架的会议管理系统
- KeePass密码管理工具以及中文包安装
- TP框架alert中文乱码的解决方法
- linux tomcat 启动 无法访问,Linux下 Tomcat 配置启动成功但是无法访问网页的问题【2019-09-25】...
- Redis集群搭建(基于6.2.6版本)
- mysql创建用户表单_mysql创建用户并赋权
- 【演示工具】Focusky教程 | 添加“关于”信息