【数据结构与算法 | 第一篇】时间复杂度和空间复杂度
前言学习数据结构与算法先要分清两个问题数据怎样组织操作怎样完成。前者由数据结构解决后者由算法解决。写代码时除了得到正确结果还要关注程序执行要花多少时间、占多少额外空间。数据结构和算法是什么数据结构是数据在计算机中的组织方式。它既包含数据之间的逻辑关系也包含具体的存储方式。从逻辑结构看常见的类型有集合结构、线性结构、树形结构和图状结构。例如数组和链表属于线性结构二叉树属于树形结构。从存储方式看数据可以连续存放也可以离散存放顺序存储元素放在连续的存储空间中例如数组。非顺序存储元素分散存放通过关系把它们连接起来包括链式存储、索引存储和散列存储。算法是解决某类问题的一组有限步骤。一个算法需要具备确定性相同的输入应得到相同的输出它也必须在有限步骤后结束。评价算法时除了正确性、可读性和健壮性还要看运行效率和存储需求。时间复杂度时间复杂度用来描述当数据规模 n 增大时算法执行次数增长得有多快。它通常写成O( )关注增长趋势不统计某一台电脑上的实际秒数。计算规则多项式相加只保留最高阶系数化为 1。例如T(n) 3n² 5n 10当 n 很大时n² 的增长最快因此时间复杂度为O(n²)。嵌套循环复杂度相乘。for(inti0;in;i){for(intj0;jn;j){// 执行一次常量操作}}外层循环执行 n 次内层每次执行 n 次总执行次数约为 n × n所以时间复杂度是O(n²)。顺序执行的代码复杂度相加后再取最高阶。for(inti0;in;i){// O(n)}for(intj0;jn*n;j){// O(n²)}总复杂度为 O(n n²)保留最高阶后是O(n²)。常见时间复杂度从低到高可以简单记为O(1)、O(log n)、O(n)、O(n log n)、O(n²)。在数据量较大时增长级别的差异会非常明显。空间复杂度空间复杂度描述算法运行时额外申请的存储空间随 n 的增长情况。这里主要看辅助变量、数组、递归调用等产生的额外空间不把输入数据本身重复计算进去。计算规则固定数量的变量占用常量空间。intmax0;intindex0;无论 n 多大变量数量都不变空间复杂度为O(1)。申请长度和 n 成正比的数组空间复杂度为 O(n)。int[]tempnewint[n];数组长度随 n 一起增长因此额外空间为O(n)。二维数组的行和列都与 n 有关空间复杂度为 O(n²)。int[][]matrixnewint[n][n];它一共保存 n × n 个元素因此空间复杂度为O(n²)。循环次数多不一定占用更多空间。只要循环中没有持续申请与 n 相关的新空间即使时间复杂度是 O(n²)空间复杂度也可能仍是 O(1)。总结数据结构决定数据怎样存放算法决定问题怎样求解。分析复杂度时时间复杂度看操作次数的增长空间复杂度看额外存储量的增长。掌握“取最高阶”和“嵌套相乘”这两条规则就能完成大多数基础复杂度判断。

相关新闻

SM320C6748-HIREL引脚复用与GPIO配置深度解析

SM320C6748-HIREL引脚复用与GPIO配置深度解析

1. 项目概述与核心价值在嵌入式硬件开发,尤其是基于德州仪器(TI)C6000系列DSP的设计中,引脚配置往往是项目启动后第一个需要啃下的硬骨头。最近在为一个工业视觉处理项目做硬件选型,核心处理器敲定了SM320C6748-HIREL这…

2026/7/15 20:50:13阅读更多 →
STM32内核精讲 | 第十五章:内核性能指标

STM32内核精讲 | 第十五章:内核性能指标

💡 本文是《STM32内核精讲》栏目的第十五篇,也是第一阶段的收官之作。前十四篇我们深入学习了寄存器模型、异常处理、AAPCS、启动文件、低功耗、调试跟踪、内存屏障以及内核选型。本篇将聚焦于内核性能指标——CoreMark、DMIPS 的由来与测试方法&#xf…

2026/7/15 20:50:13阅读更多 →
使用ffprobe命令深度剖析视频流元数据

使用ffprobe命令深度剖析视频流元数据

1. 认识ffprobe:视频元数据的瑞士军刀 第一次接触ffprobe时,我正被一个直播流的卡顿问题困扰。当时只知道用播放器反复测试,直到同事扔给我一行命令: ffprobe -show_streams rtsp://example.com/live 。这个看似简单的工具瞬间揭…

2026/7/15 20:45:12阅读更多 →
CSS 动画的性能极限测试:同时驱动 1000 个元素的方法论

CSS 动画的性能极限测试:同时驱动 1000 个元素的方法论

CSS 动画的性能极限测试&#xff1a;同时驱动 1000 个元素的方法论 一、写了一个 Demo&#xff1a;屏幕上 1000 个彩色圆点各自以不同频率缩放跳动——FPS 从 60 掉到 8 动画的构建过程很有仪式感&#xff1a;用 for 循环生成 1000 个 <div>&#xff0c;给每个 <div&g…

2026/7/15 22:00:21阅读更多 →
AI 驱动的视觉回归测试:像素级差异的智能分析与误报过滤

AI 驱动的视觉回归测试:像素级差异的智能分析与误报过滤

AI 驱动的视觉回归测试&#xff1a;像素级差异的智能分析与误报过滤 一、CI 中 217 个截图差异报告全被点了 "Approve"——不是代码没问题&#xff0c;是谁都不想看 217 个对比图 一个 UI 组件库升级了依赖版本后&#xff0c;视觉回归测试&#xff08;Visual Regress…

2026/7/15 22:00:21阅读更多 →
华为MetaERP PO模块集成方案设计时主要关注入站接口(Inbound/导入)、出站出口(Outbound/报表或BI抽取)、关联模块接口(接收/请购/AP)以及PL/SQL API。下面按架构视

华为MetaERP PO模块集成方案设计时主要关注入站接口(Inbound/导入)、出站出口(Outbound/报表或BI抽取)、关联模块接口(接收/请购/AP)以及PL/SQL API。下面按架构视

PO模块集成方案设计时主要关注入站接口&#xff08;Inbound/导入&#xff09;、出站出口&#xff08;Outbound/报表或BI抽取&#xff09;、关联模块接口&#xff08;接收/请购/AP&#xff09;以及PL/SQL API。下面按架构视角分类说明 Oracle EBS R12 PO模块的标准接口。一、PO采…

2026/7/15 22:00:21阅读更多 →
链上 AI 模型缓存层设计:推理结果复用、热度淘汰策略与存储成本优化

链上 AI 模型缓存层设计:推理结果复用、热度淘汰策略与存储成本优化

链上 AI 模型缓存层设计&#xff1a;推理结果复用、热度淘汰策略与存储成本优化 一、链上 AI 的推理成本危机&#xff1a;为什么每次推理都不应该是新请求 链上 AI&#xff08;On-chain AI&#xff09;正在从概念验证走向生产应用。无论是用 ZKML 验证模型推理的正确性&#xf…

2026/7/15 22:00:21阅读更多 →
去中心化 AI 训练的状态同步协议:模型梯度的链上聚合与差分压缩传输方案

去中心化 AI 训练的状态同步协议:模型梯度的链上聚合与差分压缩传输方案

去中心化 AI 训练的状态同步协议&#xff1a;模型梯度的链上聚合与差分压缩传输方案 一、去中心化训练的同步困境&#xff1a;当梯度遇上区块链 联邦学习和去中心化训练的核心挑战不是模型本身&#xff0c;而是状态同步。在传统的中心化训练中&#xff0c;所有 worker 将梯度推…

2026/7/15 22:00:21阅读更多 →
【法律人AI提效秘籍】:3步用ChatGPT自动提取判例核心要件,准确率提升92%(实测司法文书库)

【法律人AI提效秘籍】:3步用ChatGPT自动提取判例核心要件,准确率提升92%(实测司法文书库)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT整理判例要点的底层逻辑与司法语义适配原理 ChatGPT在判例分析任务中并非简单地执行关键词匹配或模板填充&#xff0c;而是依托三层协同机制实现法律文本的深度理解&#xff1a;领域感知的预训练语义空…

2026/7/15 21:55:20阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比&#xff1a;全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时&#xff0c;第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/15 6:42:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件&#xff1a;5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/15 6:12:45阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL&#xff1a;跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/15 10:54:00阅读更多 →
AI框架决定企业AI能走多远

AI框架决定企业AI能走多远

企业AI建设的第一性原理 企业搞AI&#xff0c;最关键的决定是什么&#xff1f;不是选哪家大模型&#xff0c;不是先做哪个场景&#xff0c;不是招多少AI人才——而是选哪个AI开发框架。 为什么&#xff1f;因为框架决定了企业AI能力的"天花板"。选对了框架&#xff0…

2026/7/15 0:01:30阅读更多 →
Java企业为什么需要AI框架

Java企业为什么需要AI框架

Java企业在AI时代的尴尬处境 Java是全球企业级应用开发的主流语言——全球超过一半的企业系统跑在Java上。但在AI浪潮面前&#xff0c;很多Java企业感到尴尬&#xff1a;大模型的接口是各种语言的&#xff0c;AI开发社区以其他语言为主流&#xff0c;似乎Java在AI时代"掉队…

2026/7/15 0:01:30阅读更多 →
CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

CC3230x嵌入式开发实战:SD主机、定时器与低功耗模式深度解析

1. 项目概述&#xff1a;为什么需要关注CC3230x的SD主机、定时器与低功耗&#xff1f;在物联网和嵌入式设备开发领域&#xff0c;我们常常面临一个核心矛盾&#xff1a;设备需要具备强大的连接能力、可靠的数据存储和实时控制功能&#xff0c;同时又必须严格控制功耗以延长电池…

2026/7/15 0:01:30阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/15 15:50:47阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/15 8:52:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/15 14:06:23阅读更多 →