[数据结构与算法·C++] 笔记 1.4 算法复杂性分析
1.4 算法复杂性分析
算法的渐进分析
- 数据规模 n 逐步增大时, f(n)的增长趋势
- 当 n 增大到一定值以后,计算公式中影响最大的就是 n 的幂次最高的项
- 其他的常数项和低幂次项都可以忽略
大O表示法
- 函数f,g定义域为自然数,值域非负实数集
- 定义: 如果存在正数c和n,使得对任意的 n > = n 0 n >=n_0 n>=n0,都有 f ( n ) ≤ c g ( n ) f(n)≤cg(n) f(n)≤cg(n)
- 称 f ( n ) f(n) f(n) 在集合 O ( g ( n ) ) O(g(n)) O(g(n)) 中,简称 f ( n ) 是 O ( g ( n ) ) f(n)是 O(g(n)) f(n)是O(g(n)) 的, 或 f ( n ) = O ( g ( n ) ) f(n)= O(g(n)) f(n)=O(g(n))
- 大 O 表示法: 表达函数增长率上限
- 一个函数增长率的上限可能不止一个
- 当上、下限相同时则可用 Θ 表示法(大O最常用, 大Θ也可简单看作大O)
大O表示法的单位时间
-
简单布尔或算术运算
-
简单 I/O
- 指函数的输入/输出
- 例如,从数组读数据等操作
- 不包括键盘文件等 I/O
-
函数返回
大 O 表示法的运算法则
-
加法规则: f 1 ( n ) + f 2 ( n ) = O ( m a x ( f 1 ( n ) , f 2 ( n ) ) ) f_1(n)+f_2(n)=O(max(f_1(n),f_2(n))) f1(n)+f2(n)=O(max(f1(n),f2(n)))
- 顺序结构,if 结构,switch 结构
-
乘法规则: f 1 ( n ) ⋅ f 2 ( n ) = O ( f 1 ( n ) ⋅ f 2 ( n ) ) f_1(n)·f_2(n) =O(f_1(n)·f₂(n)) f1(n)⋅f2(n)=O(f1(n)⋅f2(n))
- for, while, do-while 结构 (复杂度相乘)
- 例如:
for(i=0; i<n; i++)for (j=i; j<n; j++)k++;- 上述两个循环的复杂度为 n 2 = n ⋅ n n^2=n \cdot n n2=n⋅n
大Ω表示法
- 定义 :如果存在正数c和 no,使得对所有的 n ≥ n 0 n≥n_0 n≥n0都有 f ( n ) ≥ c g ( n ) f(n)≥ cg(n) f(n)≥cg(n), 则称 f(n) 在集合 Ω ( g ( n ) ) Ω(g(n)) Ω(g(n)) 中,或简称 f ( n ) f(n) f(n) 是 Ω ( g ( n ) ) Ω(g(n)) Ω(g(n)) 的,或 f ( n ) = Ω ( g ( n ) ) f(n)=Ω(g(n)) f(n)=Ω(g(n))
- 大 O表示法和大 Ω 表示法的唯一区别在于不等式的方向而已
- 采用大 Ω 表示法时,最好找出在函数增值率的所有下限中那个最"紧"(即最大)的下限
f ( n ) f(n) f(n)值越大, 复杂度增长率越高, 效率越低
时空权衡
- 增大空间开销可能改善算法的时间开销
- 可以节省空间,往往需要增大运算时间
相关文章:
[数据结构与算法·C++] 笔记 1.4 算法复杂性分析
1.4 算法复杂性分析 算法的渐进分析 数据规模 n 逐步增大时, f(n)的增长趋势当 n 增大到一定值以后,计算公式中影响最大的就是 n 的幂次最高的项其他的常数项和低幂次项都可以忽略 大O表示法 函数f,g定义域为自然数,值域非负实数集定义: …...
Hive parquet表通过csv文件导入数据
1. background 已建好了 hive parquet 格式的表, 需要从服务器的csv导入数据至该hive表 2. step 提前上传csv至服务器 /path/temp.csv 创建 textfile 格式的中转表(这里使用内部表,方便删除) ,源表名dw_procurement.dwd_tc_comm_plant ,这里中转表加上了csv后缀 CREATE TA…...
C++ 构造函数最佳实践
文章目录 1. 构造函数应该做什么1.1 初始化成员变量1.2 分配资源1.3 遵循 RAII 原则1.4 处理异常情况 2. 构造函数不应该做什么2.1 避免做大量的工作2.2 不要在构造函数中调用虚函数2.3 避免在构造函数中执行复杂的初始化逻辑2.4 避免调用可能抛出异常的代码 3. 构造函数的其他…...
C++——关联式容器(4):set和map
在接触了诸如二叉搜索树、AVL树、红黑树的树形结构之后,我们对树的结构有了大致的了解,现在引入真正的关联式容器。 首先,先明确了关联式容器的概念。我们之前所接触到的如vector、list等容器,我们知道他们实际上都是线性的数据结…...
Spring Mybatis 基本使用 总结
1. 简介 Mybatis库可以简化数据库的操作,专注于sql语句。 2.搭建步骤 2.1 在pom.xml引入mybatis <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version> </dep…...
接口幂等性和并发安全的区别?
目录标题 幂等性并发安全总结 接口幂等性和并发安全是两个不同的概念,虽然它们在设计API时都很重要,但侧重点不同。 幂等性 定义:幂等性指的是无论对接口进行多少次相同的操作,结果都是一致的。例如,HTTP的PUT和DELE…...
【记录一下VMware上开虚拟端口映射到公网】
材料 win11 和装在vmware上的ubuntu 步骤一在Ubuntu上配置静态地址,配置如下 vim /etc/netplan/01-network-manager-all.yaml(此文件看系统上对应的是哪个文件,建议先备份)network:version: 2renderer: NetworkManagerethernets:ens33:dhcp4: falseadd…...
半导体器件制造5G智能工厂数字孪生物联平台,推进制造业数字化转型
半导体器件制造行业作为高科技领域的核心驱动力,正积极探索和实践以5G智能工厂数字孪生平台为核心的新型制造模式。这一创新不仅极大地提升了生产效率与质量,更为制造业的未来发展绘制了一幅智能化、网络化的宏伟蓝图。 在半导体器件制造5G智能工厂中&a…...
数据结构之存储位置
p 和 "hello,world"存储在内存哪个区域?( ) (鲁科安全) int main() { char *p "hello,world"; return 0; } p是栈区,”hello,world”是.ro段 一个由C/C编译的程序,会将占用的内存分为几个部分:堆、栈、代…...
传输层协议(TCP和UDP)
目录 一、UDP 1、UDPAPI 2、UDPAPI的使用 二、TCP 1、TCPAPI 2、TCP的相关特性 2.1 确认应答 2.2 超时重传 2.3 连接管理(三次握手,四次挥手) 2.4 滑动窗口 2.5 流量控制 2.6 拥塞控制 2.7 延时应答 2.8 捎带应答 2.9 面向字节…...
智能仓库|基于springBoot的智能无人仓库管理设计与实现(附项目源码+论文+数据库)
私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 互联网发展至今,无论是其理论还是技术都已经成熟…...
2.《DevOps》系列K8S部署CICD流水线之部署NFS网络存储与K8S创建StorageClass
架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G操作系统:Rocky9.3 后续通过K8S部署GitLab、Harbor、Jenkins 一、环境准备 #关闭防火墙开机自…...
【数据仓库】数据仓库常见的数据模型——维度模型
文章部分图参考自:多维数据模型各种类型(星型、雪花、星座、交叉连接) - 知乎 (zhihu.com) 文章部分文字canla一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)-腾讯云开发者社区-腾讯云 (ten…...
【Kubernetes】常见面试题汇总(三十)
目录 82. Worker 节点宕机,简述 Pods 驱逐流程。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产应用题。 8…...
【Web】PolarCTF2024秋季个人挑战赛wp
EZ_Host 一眼丁真命令注入 payload: ?host127.0.0.1;catf* 序列一下 exp: <?phpclass Polar{public $lt;public $b; } $pnew Polar(); $p->lt"system"; $p->b"tac /f*"; echo serialize($p);payload: xO:5:"Polar":2:{s:2:"…...
职业技能大赛-自动化测试笔记分享-2
一、时间等待处理 1、强制等待(无条件等待) 使用方法:time.sleep(delay) delay的单位为秒,delay设置多少秒页面就会等待多长时间,容易让线程挂掉,使程序抛异常,所以要慎用此方法。 #导入强制等待模块 import time from selenium import webdriverwd = webdriver.Chro…...
LeetCode讲解篇之1343. 大小为 K 且平均值大于等于阈值的子数组数目
文章目录 题目描述题解思路题解代码 题目描述 题解思路 题目让我们求长度为k的子数组并且该子数组的平均值大于threshold,对于这题,我们可以考虑维护一个长度为k的窗口,窗口不断向右滑动,遍历所有长度为k的子数组,我们…...
电子元件制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
5G智能工厂与物联数字孪生平台的融合应用,不仅为电容器制造业注入了新的活力,更为整个制造业的数字化转型树立了新的标杆。电子元件制造过程中,数字孪生平台通过实时监测生产线的各个环节,实现了生产流程的可视化监控。管理人员可…...
【成品论文】2024年华为杯研赛E题25页高质量成品论文(后续会更新
您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/Mxv2XNWxUc https://qm.qq.com/q/Mxv2XNWxUc 高速公路应急车道紧急启用模型…...
【后端】【语言】【python】python常见操作
文章目录 1. List 操作2. JSON 操作3. Dict 操作 下面是分别演示 list、json、dict 操作 1. List 操作 my_list[] # List 操作示例 my_list [1, 2, 3, "apple", True]# 添加元素 my_list.append("new item") # [1, 2, 3, "apple", True, &qu…...
MS5803-14BA I²C驱动开发:嵌入式压力传感器实战指南
1. MS5803-14BA压力传感器库深度解析:面向嵌入式工程师的IC驱动开发实践1.1 传感器核心特性与工程定位MS5803-14BA是TE Connectivity(原Measurement Specialties)推出的高精度数字压力/温度复合传感器,采用MEMS压阻式传感原理与Δ…...
STM32单片机电机PID控制技术详解
STM32单片机实现电机PID控制技术解析1. 项目概述PID控制算法作为经典控制理论的核心算法,在工业控制领域已有近百年的应用历史。在电机控制场景中,PID算法通过调节PWM占空比实现对电机转速或位置的精确控制。本项目基于STM32单片机平台,实现了…...
DNF联机搭建避坑指南:从‘花枝登录器’授权到PVF加密的全流程解析
DNF私服联机搭建实战:从授权配置到加密通信的完整解决方案 当几个朋友想搭建一个私人DNF服务器享受联机乐趣时,最令人头疼的往往不是服务端的启动,而是如何让客户端顺利连接。本文将聚焦于那些让"单机变联机"的关键技术环节——登录…...
Wan2.2-I2V-A14B效果展示:RTX4090D优化版生成高清视频作品集,开箱即用
Wan2.2-I2V-A14B效果展示:RTX4090D优化版生成高清视频作品集,开箱即用 1. 惊艳效果预览:专业级视频生成能力 当第一次看到Wan2.2-I2V-A14B生成的视频作品时,很难相信这些画面完全由AI从文字描述创造。这款专为RTX4090D优化的文生…...
项目介绍 MATLAB实现基于RRT-Bezier快速搜索随机树算法(RRT)结合贝塞尔曲线拟合(Bezier)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 还请多多点一下关注 加
MATLAB实现基于RRT-Bezier快速搜索随机树算法(RRT)结合贝塞尔曲线拟合(Bezier)进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面(含完整的程序&a…...
Open Interpreter连接LM Studio:双引擎部署实战教程
Open Interpreter连接LM Studio:双引擎部署实战教程 1. 开篇:为什么需要本地AI编程助手? 想象一下这样的场景:你手头有一个2GB的CSV数据文件需要分析处理,但云端AI工具有文件大小限制;或者你正在处理敏感…...
Swagger2配置避坑指南:为什么你的Docket分组设置会导致api-docs 404?
Swagger2配置避坑指南:为什么你的Docket分组设置会导致api-docs 404? 在RESTful API开发中,Swagger2作为API文档生成工具被广泛使用。但许多开发者在配置过程中都遇到过这样的问题:明明能正常访问swagger-ui.html页面,…...
如何让AI成为你的第二大脑?AnythingLLM浏览器扩展使用指南
如何让AI成为你的第二大脑?AnythingLLM浏览器扩展使用指南 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型(…...
QuantsPlaybook因子测试框架深度剖析:量化因子评估的创新方法论
QuantsPlaybook因子测试框架深度剖析:量化因子评估的创新方法论 【免费下载链接】QuantsPlaybook 项目地址: https://gitcode.com/GitHub_Trending/qu/QuantsPlaybook 副标题:如何构建稳定有效的选股策略?从原理到实战的完整指南 量…...
4大维度解锁TrafficMonitor插件扩展能力:定制化系统监控全攻略
4大维度解锁TrafficMonitor插件扩展能力:定制化系统监控全攻略 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 价值定位:为什么需要TrafficMonitor插件系…...
