当前位置: 首页 > article >正文

数据结构与算法学习笔记

java一.数据结构简介1. 为什么要有数据结构数据太多、太乱 → 无法高效处理 →必须结构化2. 数据结构的两大分类逻辑结构数据之间的关系怎么理解物理结构内存中的存储方式怎么实现3. 逻辑结构4 种本质 2 类)线性结构一对一线性表,栈,队列非线性结构一对多 / 多对多图多对多,树一对多4. 物理结构2 种顺序存储连续内存数组链式存储不连续靠指针链表一句话闭环数据乱 → 要结构 → 逻辑关系、物理存储。逻辑线性 / 非线性物理顺序 / 链式。二.算法简介1. 什么是算法算法 解决问题的一套 “有限、确定、可执行” 的步骤有输入、有输出、一定能结束不是无限循环2. 为什么要评价算法逻辑起点同一个问题可以有很多种算法但有的快、有的慢、有的占内存多、有的占内存少 →必须有标准判断好坏3. 算法的两个核心要求要求 1运行时间少越快越好要求 2占用内存少越省越好4. 两个要求 → 衍生出两个复杂度量化标准对应 “时间少” →时间复杂度衡量快慢对应 “内存少” →空间复杂度衡量占用5. 复杂度的统一逻辑为什么都看增长趋势时间、空间复杂度本质都是随数据规模变大消耗的增长趋势→ 只看最高次项忽略常数、低次项二.算法分析1.时间复杂度(1)为什么要分析时间复杂度算法要运行得快→ 需量化 “快慢” → 用执行时间衡量但直接测时间不准 → 转为统计执行次数执行次数 ≈ 执行时间步骤越多耗时越长(2)分析方法事前 vs 事后事后分析法运行代码实测实际耗时 不建议受机器、语言、数据影响结果不可靠无法预测大数据表现事前分析法不运行代码数学推导执行次数采用通用、稳定能预测大数据趋势是算法设计核心方法(3)事前分析的核心大 O 记法是什么描述执行次数随数据规模 n 的增长趋势的数学表示法只看量级不看精确值怎么记保留最高次项忽略常数、低次项、系数例T (n)2n²3n1 → 保留 n² → 记为 O (n²)(4)事前分析的规则可忽略加法常数、低次项、最高次项系数为什么忽略算法关注大数据下的表现常数只影响起步快慢不改变增长趋势低次项增长速度远低于最高次项n 足够大时可忽略不计系数仅为倍数不改变算法的增长级别不可忽略最高次项决定算法是快是崩是增长趋势的核心(5)常见大 O 阶常数阶 O (1)无循环、固定步骤与 n 无关增长最慢对数阶 O (log n)二分查找增长极慢线性阶 O (n)单层循环线性增长线性对数阶 O (n log n)高效排序归并 / 快速平方阶 O (n²)双层嵌套循环增长快立方阶 O (n³)三层嵌套循环增长极快排序从小到大O(1) O(log n) O(n) O(n log n) O(n²) O(n³)一句话闭环全链路关联要衡量算法快慢 → 用执行次数替代执行时间 → 分事前 / 事后分析 → 事后不准 → 用事前推导 → 事前用大 O 记法看趋势、忽略常数 / 低次项 / 系数因不影响大数据表现 → 常见复杂度按增长速度排序含常数阶 O (1)2.空间复杂度1. 前置知识位与字节为什么计算机只识别 0/1最小单位是位1 位存不下信息8 位打包为字节1 字节 8 位均为 2 的指数二进制天然翻倍硬件效率最高。Java 常见类型字节数byte (1)存小整数省空间short (2)比 byte 范围大折中int (4)最常用满足日常计算long (8)存超大整数float (4)单精度小数省空间double (8)默认浮点精度高char (2)Unicode 编码存全球字符boolean (1)仅存 true/false最小空间\对象 16 字节开销为什么对象需虚拟机管理存对象头构成标记字8 字节存哈希、锁状态 类型指针8 字节指向类16 字节原因64 位指针占 8 字节满足 8 字节对齐内存填充含原因为什么64 位 CPU 一次读 8 字节数据需对齐到 8 字节地址规则不足 8 字节自动填充避免跨块读取提升效率2. 空间复杂度自身空间复杂度的作用衡量算法内存占用多少。避免内存溢出OOM。优化空间适配低内存设备。空间复杂度是什么定义算法执行时额外占用内存空间随数据规模 n 的增长趋势。核心只算 “自己新开的空间”输入 / 输出不算。与时间复杂度大 O的相似之处都用大 O 记法只看增长趋势。都忽略常数、低次项、系数保留最高次项。都用于事前分析不依赖机器环境空间复杂度常用吗非常常用是算法评价的第二核心指标。面试必考尤其原地算法 O (1)。递归、动态规划、数组必须算空间。内存有限时空间比时间更关键。一句话闭环二进制→位 / 字节→类型按用途分配字节→对象头 16 字节管理→8 字节对齐填充→空间复杂度 额外内存增长趋势→同时间复杂度用大 O、看趋势→常用、防溢出、优化内存。三.排序算法1.冒泡排序1. 冒泡排序的目的对一组无序的整数序列通过相邻元素比较交换实现从小到大或从大到小的有序排列。2. 核心思想每一轮遍历比较相邻两个元素按规则交换位置,已排序元素不进入第二轮从小到大大元素逐步后移像气泡上浮到末尾从大到小小元素逐步后移像气泡上浮到末尾每轮确定 1 个最终位置重复 n-1 轮完成排序3.代码实现三种代码实现4.时间复杂度分析过程5.应用与拓展与讲解2.选择排序1.简介2.3.插入排序4.希尔排序5.归并排序6.快速排序7.综合分析四,线性表

相关文章:

数据结构与算法学习笔记

java一.数据结构简介1. 为什么要有数据结构?数据太多、太乱 → 无法高效处理 → 必须结构化2. 数据结构的两大分类逻辑结构:数据之间的关系(怎么理解)物理结构:内存中的存储方式(怎么实现)3. 逻…...

英飞凌TC3XX时钟系统实战:从PLL配置到CCU分频的避坑指南

英飞凌TC3XX时钟系统实战:从PLL配置到CCU分频的避坑指南 在嵌入式系统开发中,时钟系统如同人体的神经系统,为整个芯片提供精准的时序控制和同步信号。作为英飞凌AURIX™系列中的旗舰产品,TC3XX微控制器凭借其高度可配置的时钟架构…...

G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案

G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

为什么要使用幂等防重复提交,它的逻辑是什么对比其他的来说有什么优势

好,这个问题非常关键,尤其是在金融、支付、电商、表单提交流水线等场景,理解“为什么用幂等 防重复提交”和“它和其他方案比的优势”是做高可靠系统的核心。一、为什么要做幂等防重复提交?1️⃣ 重复请求是现实世界里的必然在真…...

DeepSeek总结的 PostgreSQL 19:为 UPDATE/DELETE 添加 FOR PORTION OF 子句

原文地址:https://www.depesz.com/2026/04/02/waiting-for-postgresql-19-add-update-delete-for-portion-of/ 等待 PostgreSQL 19:为 UPDATE/DELETE 添加 FOR PORTION OF 子句 2026 年 4 月 1 日,Peter Eisentraut 提交了一个补丁&#xf…...

对在aarch64 Linux环境编译安装的CinderX补充测试

前文最后说,CinderX报错不能用,这不对,我在其github存储库上提了这个issue,alexmalyshev回复 I think that’s actually just a warning that you’re getting but things should be working after that?Right, this is just a l…...

springcloud项目如何禁用三方依赖的拦截器

背景: 原始代码中有一个自定义的通用依赖,这个依赖中有很多通用方法和拦截器供整个系统使用。 需求: 禁用其中一个拦截器,保留其他方法和拦截器,过滤器等。 拦截器介绍 原有拦截器,自己封装了一个jdk&#…...

如何查看浏览器中当前存储的 Cookie?

如何查看浏览器中的 Cookie?为什么有些 Cookie 看不到?1. 引言:快递单号与隐私信封2. Cookie 是什么?(小白必备)3. 核心问题:为什么有些 Cookie“看不到”?4. 如何查看 Cookie&#…...

如何保证 Session ID 的随机性和不可猜测性?

你的 Session ID 安全吗?—— 从可预测的“门禁卡”到安全的“加密钥匙”1. 引言:一张编号可以被猜到的门禁卡2. Session 与 Session ID:会话的“钥匙”3. 为什么 Session ID 必须随机且不可预测?4. 攻击详解:会话劫持…...

OpenClaw安全防护:Phi-3-mini操作权限管控方案

OpenClaw安全防护:Phi-3-mini操作权限管控方案 1. 为什么需要OpenClaw安全防护 上周我在调试一个自动化文档整理任务时,差点酿成大错。当时OpenClaw连接的Phi-3-mini模型误解了我的指令,试图删除整个工作目录下的文件。虽然及时终止了进程&…...

容器环境下各种兼容模式+多实例

注意: #多实例端口不同数据目录不同容器名不同 1. -p 主机端口:容器端口 容器端口永远是 54321(不用改) 主机端口必须不一样:4321、4322、4323... 一个端口只能给一个数据库用,就像一个门不能同时进两个人。2. -v 主机…...

10. Doris 系列第10篇:数据查询全攻略|Join/子查询/窗口函数,从基础到高级实战

适合人群:大数据开发、Doris查询调优工程师、数仓分析师、BI工程师核心价值:吃透Doris 2.x数据查询核心能力,掌握Join算法选型、子查询优化、多维聚合、窗口函数实战,解决查询慢、资源浪费、语法报错等问题系列说明:本…...

从package.xml到CMakeLists.txt:手把手教你配置一个ROS1机器人控制包(附完整项目模板)

从package.xml到CMakeLists.txt:构建工业级ROS1机器人控制包的完整指南 在机器人操作系统(ROS)开发中,功能包的配置质量直接影响项目的可维护性和扩展性。本文将带您深入理解ROS1功能包的核心配置文件,通过一个完整的工业机器人控制包案例&am…...

告别上位机!纯FPGA实现exFAT文件系统,让你的高速数据直接存成标准文件

纯FPGA实现exFAT文件系统:硬件工程师的高速存储革命 在高速数据采集领域,从雷达信号处理到卫星通信,工程师们长期面临一个核心痛点:如何将海量原始数据高效、可靠地转换为标准文件格式。传统方案依赖上位机或嵌入式处理器进行文件…...

OpenCV透视变换实战:从文档矫正到AR应用

1. 透视变换基础:从原理到生活场景 想象一下你正在用手机拍摄一张放在桌上的发票,由于角度问题,发票在照片里变成了梯形。这时候你需要的正是透视变换——它能把这个梯形"掰正"成规整的矩形。在计算机视觉领域,透视变换…...

Apollo6.0 Lattice算法实战解析——从轨迹组合到最优路径生成

1. Lattice算法在Apollo6.0中的核心作用 Lattice算法是Apollo自动驾驶系统中的关键路径规划模块,它负责将横向和纵向轨迹进行智能组合,最终生成安全、舒适且符合交通规则的最优行驶路径。这个算法就像一位经验丰富的导航员,不仅要考虑车辆当前…...

别再死磕逐位计算了!用C语言手撸一个CRC32查表函数(附完整代码和表格生成)

从零构建高性能CRC32查表算法:嵌入式场景的极致优化实践 在嵌入式开发中,数据校验的效率和资源消耗往往成为系统设计的瓶颈。传统逐位计算的CRC32实现虽然直观,但在处理高速数据流或资源受限环境时,其性能劣势暴露无遗。查表法通过…...

ComfyUI-WanVideoWrapper全栈指南:从认知到实践的AI视频生成解决方案

ComfyUI-WanVideoWrapper全栈指南:从认知到实践的AI视频生成解决方案 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 一、认知篇:理解AI视频生成的技术基础 1.1 核心概念…...

微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案

微信聊天记录本地管理:WeChatMsg实现数据主权与记忆留存的完整方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...

快马平台快速原型:十分钟搭建openclaw skills机器人抓取仿真环境

最近在研究机器人抓取技能(openclaw skills)的仿真验证,发现用InsCode(快马)平台可以快速搭建原型环境。整个过程比想象中简单很多,十分钟就能跑通基础功能,分享下具体实现思路: 场景搭建 先用Three.js创建…...

5分钟掌握gInk:让屏幕标注如同纸上书写的终极指南

5分钟掌握gInk:让屏幕标注如同纸上书写的终极指南 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk 你是否曾在远程会议中,试图在共享屏幕上圈出重…...

ai赋能开发:使用快马平台智能优化openclaw 101抓取控制算法

最近在优化一个机械臂抓取控制项目时,发现传统的手动调参和算法改进效率太低。正好尝试了InsCode(快马)平台的AI辅助开发功能,整个过程让我对智能化编程有了全新认识。下面分享用AI优化OpenClaw 101控制算法的完整经历: 原始问题分析 初始代码…...

河海大学819传热学考研复试备考资料(新能源学院·清洁能源技术专硕专用)

温馨提示:文末有联系方式【权威备考】河海大学819传热学复试专属资料包 本资料由2025届成功录取河海大学新能源学院清洁能源技术专业硕士的学长亲自整理,初试与复试综合成绩稳居前三,内容高度贴合最新考核趋势。【高效提分利器】核心资料全覆…...

灵活创建Windows安装介质:MediaCreationTool.bat的实用指南

灵活创建Windows安装介质:MediaCreationTool.bat的实用指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

别再死记硬背了!用‘减法’和‘host/any’关键字,5分钟搞定思科ACL通配符掩码配置

思科ACL通配符掩码:5分钟掌握减法计算与host/any实战技巧 刚接触思科ACL配置时,通配符掩码总是让人头疼。那些0和1的组合看似简单,实际配置时却容易出错。但你可能不知道,掌握两个核心技巧就能彻底解决这个问题——用255.255.255.…...

从0到1落地智能仓储:C#上位机+Modbus RTU实现AGV集群调度与货物自动分拣

本文是纯实战、可直接落地的智能仓储完整方案,基于C# .NET 6 + Modbus RTU/Modbus TCP + AGV调度 + 自动分拣,从零搭建一套轻量级、低成本、高可靠的智能仓储系统,适用于电商仓库、工厂原料仓、成品仓、立体库。 无废话、无虚架构,代码可直接复制运行,适合新手从0到1上手智…...

Windows平台Datax部署与初体验:从零到一的数据同步实战

1. Windows平台Datax部署全攻略 第一次在Windows上折腾Datax的经历我还记得很清楚,当时为了同步几个简单的数据表,硬是折腾了大半天。现在回头看,其实只要掌握几个关键步骤,半小时就能搞定。Datax作为阿里开源的数据同步工具&…...

旺季仓容紧张跨境卖家如何提前规划备货与入仓

决胜销售旺季:跨境卖家的备货与入仓战略指南随着全球电商购物节日益临近,无论是年末的“黑色星期五”、圣诞季,还是区域性的大促活动,一个共同的挑战悄然浮现:仓库容量告急。对于跨境卖家而言,旺季不仅是销…...

解决Ubuntu中libc6-dev:i386依赖问题的完整指南

1. 理解libc6-dev:i386依赖问题的本质 当你正在愉快地使用Ubuntu系统,突然在执行sudo apt-get upgrade时遇到一堆红色错误提示,特别是看到"libc6-dev:i386 : 依赖: libc6:i386 ( 2.31-0ubuntu9.14) 但无法安装它"这样的报错,是不是…...

Load-Use冒险避坑指南:为什么你的RISC流水线转发电路会失效?

Load-Use冒险避坑指南:为什么你的RISC流水线转发电路会失效? 在处理器设计的迷宫中,Load-Use冒险就像是一个精心设计的陷阱,等待着那些过分依赖转发电路的工程师。这种特殊的RAW(Read After Write)冒险场景…...