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

数据结构(回顾)

数据结构(回顾)

回顾

不同点顺序表链表
存储空间上物理上一定连续逻辑上连续,物理上不一定连续
随机访问支持,时间复杂度O(1)不支持,时间复杂度O(N)
任意位置插入或者删除元素可能需要挪动元素,效率低,时间复杂度O(N)只需要修改指针指向
插入动态顺序表,空间不够时需要扩容没有容量的概念
应用场景元素高效存储+频繁访问任意位置插入删除频繁
缓存利用率

缓存利用率

这里的缓存利用率给大家简单讲一下就是存储也是分结构的:

在这里插入图片描述

然后顺序表由于它在存储的时候物理空间一定是连续的,在高速缓存的时候会命中率更高。这个缓存其实大概就是我加载一个数据,我连带着这个数据后面的数据也一起加载了,后面被使用的时候直接用就好了,不用重新加载一次。然后这个连着后面的数据一起加载是按照存储的物理空间连续的,线性的来的。就好比如有一组数据12345,现在要用1就加载了1,系统考虑到你后面可能会用到后面的数据,就把2345也给你加载缓存好了。这样后面你再去用这些数据的时候就会快很多。

但是链表就没有这个优点。为什么?因为链表是逻辑上连续,但是存储的时候物理空间是不连续的,可能那边一个数据,这边一个数据,然后村门口一个数据,山头一个数据。但是缓存不会管你连不连续,它就只是帮你连续的加载好后面的数据,后面的数据和你这个项目本身有没有关系,不管你,所以就涉及到了一个命中率的问题。

顺序表因为它是物理空间连续的,所以缓存的时候,缓存得到的数据就大部分都是和本项目,本问题有关的,所以命中率就高。就是缓存的后续数据和我的目标数据是否重合,重合度越高,那么命中率越高。链表反之。

对比

那么通过上面表格顺序表和链表的对比,其实大家可以发现,这两种数据结构其实有种互补的关系,有没有。好比如,顺序表适合干随机访问数据,链表不适合,顺序表不适合频繁的插入数据(因为涉及到挪动数据问题),但是链表合适。等等。

总结

还有我们后续用数组或者链表实现的栈和队列,也是顺序表的一种,不过操作比较特殊。那么大家也能察觉,这类数据结构其实比较基础,能具体解决的问题其实不算多。它们在结构中都是1对1的关系,只有一个直接前驱或后继。但是等会讲到的树,就不是这么简单的结构了,已经开始是1对多了。说这么多,都是为了让大家更明白我们前面学的大概是什么东西,也为了和后续学的东西有个区别。

再总结

这里给大家做个比喻,我们最开始学的数组,就其实像是大米,小麦。然后简单的操作一下,把大米煮一下就变成了粥(顺序表),粥改良了一下,有的人不爱喝粥,那就变成米饭(链表)。如果有人手法精巧,加上一些鸡蛋,米饭就可以变成蛋炒饭(队列),粥放点猪肉,就变成了猪肉粥(栈)。然后还有把米整成淀粉,加点青菜,加点猪肉,玉米煮一下就变成了饺子(哈希表、堆、树…)。大概的意思就是后面的很多复杂结构都是基于前面的简单结构,通过一些操作的改动,或者再加上一些佐料,就变成了复杂结构,这样也可以更好的去解决更多问题。就是想让大家也有一个这样的理解。

相关文章:

数据结构(回顾)

数据结构(回顾) 回顾 不同点顺序表链表存储空间上物理上一定连续逻辑上连续,物理上不一定连续随机访问支持,时间复杂度O(1)不支持,时间复杂度O(N)任意位置插入或者删除元素可能需要挪动元素,效率低&#…...

达梦数据库在Linux,信创云 安装,备份,还原

(一)系统环境检查 1操作系统:确认使用的是国产麒麟操作系统,检查系统版本是否兼容达梦数据库 V8。可以通过以下命令查看系统版本: cat /etc/os-release 2硬件资源:确保服务器具备足够的硬件资源&#xff0…...

从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动

目录 所以,键盘是如何工作的 说一说我们的8042 输出缓冲区寄存器 状态寄存器 控制寄存器 动手! 注册中断 简单整个键盘驱动 Reference ScanCode Table 我们下一步就是准备进一步完善我们系统的交互性。基于这个,我们想到的第一个可以…...

01-简单几步!在Windows上用llama.cpp运行DeepSeek-R1模型

1.llama.cpp介绍 Llama.cpp 是一个开源的、轻量级的项目,旨在实现 Meta 推出的开源大语言模型 Llama 的推理(inference)。Llama 是 Meta 在 2023 年开源的一个 70B 参数的高质量大语言模型,而 llama.cpp 是一个用 C 实现的轻量化…...

Trae AI 开发工具使用手册

这篇手册将介绍 Trae 的基本功能、安装步骤以及使用方法,帮助开发者快速上手这款工具。 Trae AI 开发工具使用手册 Trae 是字节跳动于 2025 年推出的一款 AI 原生集成开发环境(IDE),旨在通过智能代码生成、上下文理解和自动化任务…...

HarmonyOS Next 属性动画和转场动画

HarmonyOS Next 属性动画和转场动画 在鸿蒙应用开发中,动画是提升用户体验的关键要素。通过巧妙运用动画,我们能让应用界面更加生动、交互更加流畅,从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力&…...

JavaWeb-mysql8版本安装

下载方式 地址:https://www.mysql.com/cn/downloads/ 选择:MySQL Community (GPL) downloads 选择:MySQL Community Server 选择: 选择: 安装mysql (8.0.30) 1、以管理员身份 打开 命令行…...

【实战ES】实战 Elasticsearch:快速上手与深度实践-3.2.3 案例:新闻搜索引擎的相关性优化

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 Elasticsearch新闻搜索引擎相关性优化实战3.2.3 案例:新闻搜索引擎的相关性优化项目背景1. 相关性问题诊断与分析1.1 初始查询DSL示例1.2 问题诊断矩阵1.3 性能基…...

HCIA复习拓扑实验

一.拓扑图 二.需求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分,PC1可以正常访问3.3.3.0/24网段,但是PC2不允许 3.学校内部路由使用静态路由,R1和R2之间两…...

企业如何选择研发项目进度管理软件?盘点15款实用工具

这篇文章介绍了以下工具: 1. PingCode; 2. Worktile; 3. 腾讯 TAPD; 4. 华为 DevCloud; 5. 亿方云; 6. 阿里云效; 7. CODING 码云; 8. 明道云; 9. 进度猫; 10. 轻流等。 …...

(二 十 二)趣学设计模式 之 备忘录模式!

目录 一、 啥是备忘录模式?二、 为什么要用备忘录模式?三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...

conda 配置新环境时package will be install 和 package will be download 的区别

install 和 download 的区别 package will be downloaded下的包:这一类显示的是需要从 conda 仓库或其他指定的源下载的软件包。这些软件包通常是 .tar.bz2、.tar.xz 或 .conda 格式的压缩包。这些包会被下载到本地缓存目录(通常是 ~/.conda 或 C:\Users…...

第本章:go 切片

注意: 切片必须要初始化 才能使用 ,切片是引用类型 a :[]int{} // 这上叫始化 此时并没有申请内存 // 如果要追加值的话: append ints : append(a, 1, 2, 3)a : make([]int,5) // 声明切片类型var a []string //声明一…...

P6412题解

原题 题目描述 现在有一个 1 ∼ n 1\sim n 1∼n 的排列 a a a,将序列中的元素依次放进一个 BST 里,求 BST 中插入函数的执行次数。 注意:第一个数已经作为 BST 的根。 如果您无法理解上面说的话,这里有一份伪代码: insert( number x, node n )c+1;if x is less tha…...

关于AI数据分析可行性的初步评估

一、结论:可在部分环节嵌入,无法直接处理大量数据 1.非本地部署的AI应用处理非机密文件没问题,内部文件要注意数据安全风险。 2.AI(指高规格大模型)十分适合探索性研究分析,对复杂报告无法全流程执行&…...

编程考古-Borland历史:《.EXE Interview》对Anders Hejlsberg关于Delphi的采访内容(中)

为了纪念Delphi在2002年2月14日发布的25周年(2020.2.12),这里有一段由.EXE杂志编辑Will Watts于1995年对Delphi首席架构师Anders Hejlsberg进行的采访记录。在这次采访中,Anders讨论了Delphi的设计与发展,以及即将到来的针对Windows 95的32位版本。 Q. 编译器引擎本身是用…...

SQL 窗口函数之lead() over(partition by ) 和 lag() over(partition by )

lag() over() 与 lead() over() 函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前 N 行的数据 (lag) 和后 N 行的数据 (lead) 作为独立的列, 从而更方便地进行进行数据过滤。这种操作可以代替表的自联接,并且 LAG 和 L…...

【基础知识】回头看Maven基础

背景 项目过程中,对于Maven的pom.xml文件,很多时候,我通过各种参考、仿写,最终做出想要的效果。 但实际心里有些迷糊,不清楚具体哪个基础的配置所实现的效果。 今天,特意回过头来,了解Maven的基…...

Manus+Ollama实现本地大模型部署和应用测试

这几天Manus即DeepSeek后又突然火爆,我也进行了跟踪测试,特记录一下分享给大家,目前来看,Manus的确是一个可以进行任务分解的自动化解决方案,将其他AI需要多次繁杂的迭代对话做了较大的改进,相当于用户抛出…...

labelimg标注的xml标签转换为yolo格式标签

本文不生产技术,只做技术的搬运工!!! 前言 在yolo训练时,我们需要对图像进行标注,而使用labelimg标注时如果直接选择输出yolo格式的数据集,则原始数据的很多信息无法被保存,因此一版…...

【Python 数据结构 9.树】

我装作漠视一切,其实我在乎的太多,但我知道抓得越紧越容易失去 —— 25.3.6 一、树的基本概念 1.树的定义 树是n个结点的有限集合,n0时为空树。当n大于0的时候,满足如下两个条件: ① 有且仅有一个特定的结点&#xff…...

LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)

文章目录 LLM 学习(二 完结 Multi-Head Attention、Encoder、Decoder)Self-Attention (自注意力机制)结构多头注意力 EncoderAdd & Norm 层Feed Forward 层 EncoderDecoder的第一个Multi-Head AttentionMasked 操作Teacher Fo…...

计算机网络软考

1.物理层 1.两个主机之间发送数据的过程 自上而下的封装数据,自下而上的解封装数据,实现数据的传输 2.数据、信号、码元 码元就是数字通信里用来表示信息的基本信号单元。比如在二进制中,用高电平代表 “1”、低电平代表 “0”&#xff0c…...

从高资源到低资源语言的全覆盖:Manus AI的数据革命与迁移学习策略

在全球化语境下,多语言手写识别的最大挑战并非技术本身的复杂性,而是语言资源的极度不均衡——英语、中文等高资源语言拥有海量标注数据,而藏语、斯瓦希里语等低资源语言往往仅有零星样本。Manus AI通过数据生态构建与知识迁移技术,打破了这一资源垄断,实现了从高资源到低…...

《白帽子讲 Web 安全》之身份认证

目录 引言 一、概述 二、密码安全性 三、认证方式 (一)HTTP 认证 (二)表单登录 (三)客户端证书 (四)一次性密码(OTP) (五)多因…...

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案

目的,判断是否主键重复,不重复则登录新数据,重复则不登录。 定义类型: DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下: 模拟数据库的登录过程。假设…...

FreeRTOS第17篇:FreeRTOS链表实现细节05_MiniListItem_t:FreeRTOS内存优化

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 1 为什么需要迷你列表项? 在嵌入式系统中,内存资源极其宝贵。FreeRTOS为满足不同场景需求,设计了标准列表项(ListItem_…...

2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB

一、山羊优化算法 山羊优化算法(Goat Optimization Algorithm, GOA)是2025年提出的一种新型生物启发式元启发式算法,灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力&…...

网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】

网络基础(一) 1. 网络的发展2. 认识协议3. 网络 VS 系统4. 以太网通信原理5. 重谈协议6. 网络中的地址管理 1. 网络的发展 最开始时,计算机之间相互独立。 但是为了协作完成一些任务,就产生了计算机之间相互通讯的需求&#xff0c…...

支付宝当面付java,php,sdk下载

SDK & Demo 获取 - 支付宝文档中心 开放平台服务端 SDK 为了帮助开发者调用开放接口,支付宝提供了开放平台服务端 SDK,包含 Java、PHP、NodeJS、Python 和 .NET 等语言版本,DEMO 中封装了签名 & 验签、HTTP 接口请求等基础功能。 详…...