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

news2025/1/18 4:30:00

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 += 1

for (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)
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Paper Note】Video Swin Transformer

Video Swin Transformer 介绍架构3.2 3D Shifted Window based MSA Module3.2.1 在不重叠的三维窗口上的MSA3.2.2 3D Shifted Windows3.2.3. 3D Relative Position Bias 3.3 Architecture Variants3.4 Initialization from Pre-trained Model 总结 文章链接&#xff1a;https:/…

zabbix自动发现和自动注册部署

目录 zabbix自动发现 确保客户端上的zabbix-agent2服务状态正常 在web页面删除原有的客户端主机 在服务端和客户端上配置 hosts 解析 在 Web 页面配置自动发现 zabbix自动注册 环境准备 修改 zabbix-agent2 配置文件 在 Web 页面配置自动注册 zabbix自动发现 对于agen…

如何使用Git将本地代码上传GitHub仓库?

如何使用Git将本地代码上传GitHub仓库呢&#xff1f; 前提 要上传本地代码到GitHub仓库&#xff0c;那必然要先在GitHub上建立一个存储代码的仓库&#xff0c;这里我在仓库新建了一个名为5blog的仓库。 备注&#xff1a;本文章将以默认分支main为例来讲解上传步骤 接着我们打…

学习经验分享【26】论文写作画图方法(持续更新)

写作前面&#xff1a;论文投稿能否成功&#xff0c;图表作为比较直观的展现&#xff0c;起着关键的作用&#xff0c;图表丰富规范好看&#xff0c;一定程度上能够吸引编辑和审稿人的眼球&#xff0c;提升录用概率。就跟人的形象一样&#xff0c;形象好第一印象就会好&#xff0…

简单的重装系统教程

郁闷&#xff0c;最近电脑一直蓝屏重启&#xff0c;用 2 分钟就蓝屏一次&#xff0c;遂产生重装系统的想法。 准备 U盘(8G或以上) PE 工具&#xff1a; 微PE工具箱快速指引 | 微PE优盘使用说明书 (wepe.com.cn) 系统镜像&#xff1a; 官网 Windows 10 官网 Windows 11 M…

送给程序员的一份养生指南

本文是 Joe Kutner 的《程序员健康指南》的干货记录。时刻提醒自己要有一个健康的工作和生活方式。身体是革命的本钱&#xff0c;年轻的时候拿身体换钱&#xff0c;老了可能就要拿钱换身体。当你有被程序员职业困扰的健康问题时&#xff0c;希望这篇干货记录可以给予你一定的帮…

mybatis代码生成器模板配置

1.mybatis代码生成器的介绍 代码生成器的目标就是简化单表的增删改查操作&#xff0c;这些标准化的流程工作&#xff0c;交给机器来实现&#xff0c;不需要程序员自己去完成。一般对一张表的操作有&#xff0c;根据主键查询&#xff0c;根据map集合查询&#xff0c;单条数据插…

追踪行人和车辆,并使用deep-person-reid训练自定义追踪模型(行人和车辆两类)

deep-person-reid训练自定义模型 1. 准备代码2. market1501格式3 转换格式代码4. 训练5 追踪测试 仅供参考&#xff0c;目前实现的格式转化还是存在一定的问题&#xff0c;导致训练后的模型精度很高&#xff0c;分配上还是没有完全符合market1501的格式。依照这样训练的模型&am…

UG NX二次开发(C#)-建模-求解两条样条曲线的最大距离

文章目录 1、前言2、最大距离示例3、NXOpen代码实现1、前言 在UG NX中计算两条样条曲线的最小距离是我们常用的,但是计算最大距离却很少用,但是UG NX二次开发为我们提供了这个计算方法,我们只需要调用即可。本小节是用于计算两条样条曲线的最大距离的二次开发讲解。 2、最…

封装通用el-form表单(2种方式)

1、序言 项目地址&#xff1a;git clone form-demo: 封装通用el-form 一个后台管理系统最常见的是表单&#xff0c;表单最常见的是输入框、下拉选择、日期选择、单选、复选框等等&#xff0c; 系统添加若干模块&#xff0c;就复制粘贴若干个el-form、el-form-item&#xff0c;有…

Ubuntu下好用的截图工具flameshot

在Linux环境下截图也是十分重要的东西&#xff0c;flameshot则是一款十分好用的工具 sudo apt-get install flameshot 即可安装 安装完成后打开设置(settings) -> 设备(Devices) -> 键盘快捷键(keyboard Shortcuts),滑到最底下&#xff0c;找到一个加号 点击加号填入以…

300块买什么蓝牙耳机好?无线蓝牙耳机300左右推荐

不管你的手机是否被保留3.5mm的音频接口&#xff0c;蓝牙耳机必定是可以入手的&#xff0c;无束缚的听歌方式对我们中的大多数人都有着很强的吸引力。大多数都定价在几十几百几千不等&#xff0c;但是在300左右的价位更受大众欢迎&#xff0c;说明了中端市场是该类产品竞争最激…

如何把Ai绘画工具放到我们的App中

Scribble Diffusion 是一个简单的在线服务&#xff0c;它使用 AI 将粗略的草图转换为精致的图像&#xff0c;每一张图像都是不同的&#xff08;而且没有版权困扰&#xff09;。简单来说&#xff0c;我们只需要「用画笔描绘一张草图&#xff0c;在输入描述后稍等片刻」&#xff…

【Linux】1、操作系统、计算机硬件和软件、Linux 介绍

目录 一、计算机的硬件和软件(1) 硬件(2) 软件 二、操作系统(1) OS 作用(2) OS 举例 三、Linux 内核(1) 介绍(2) Linux 发行版 四、虚拟机 一、计算机的硬件和软件 (1) 硬件 &#x1f5a5;️ 计算机由硬件和软件组成 &#x1f5a5;️ 硬件&#xff1a;计算机中由电子、机械和…

pandas汇总和描述性统计

本文介绍pandas中汇总和描述性统计中的基本内容&#xff0c;仅供参考。 目录 1描述和汇总统计 1.1sum方法 1.2idxmin和idxmax方法 1.3describe方法 1.4描述和汇总统计的常用方法 2相关系数和协方差 3唯一值、值计数以及成员资格 3.1唯一值 3.2值计数 3.3成员资格 1…

【区块链】走进web3的世界-获取Token价格

1、通过预言机获取Token价格&#xff08;需要部署合约&#xff09; 在以太坊区块链上&#xff0c;由于智能合约本身无法获取外部数据&#xff0c;因此需要使用预言机 (Oracle) 来获取外部数据。 以下是一个获取代币价格的示例&#xff1a; 选择预言机&#xff1a;首先需要选…

ThreadLocal小记

1、ThreadLocal介绍 1.1、官方介绍 /*** This class provides thread-local variables. These variables differ from* their normal counterparts in that each thread that accesses one (via its* {code get} or {code set} method) has its own, independently initiali…

PPOCR - 命令行训练模型基本流程和常用命令+visualdl可视化

前言 本文记录实践中用paddleocr训练自己的模型的基本步骤和常用命令&#xff0c;以detection为例 更详细内容请参考官方文档https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/doc/doc_ch 〇、环境准备 0.1 paddlepaddle环境安装 paddle环境安装链接 根据自己的…

H.264 编码中, I 帧、B 帧、P 帧、IDR 帧的区别

在H.264协议里定义了三种帧&#xff0c;完整编码的帧叫 I 帧&#xff0c;参考之前的 I 帧生成的只包含差异部分编码的帧叫 P 帧&#xff0c;还有一种参考前后的帧编码的帧叫 B 帧。 H.264采用的核心算法是帧内压缩和帧间压缩&#xff0c;帧内压缩是生成 I 帧的算法&#xff0c…

【镜像取证篇】DD和E01镜像格式区别(简)

【镜像取证篇】DD和E01镜像格式区别&#xff08;简&#xff09; ​ 简单总结下—【蘇小沐】 文章目录 【镜像取证篇】DD和E01镜像格式区别&#xff08;简&#xff09;1、实验环境 &#xff08;一&#xff09;DD镜像-原始镜像&#xff08;和源盘大小一致&#xff09;&#xff0…