数据结构(理论篇上)

特征提取神操作,登上Nature!计算速度狂提300%! 登上Nature!作者提出CVOCA,一种能同时处理数据的幅度和相位信息的卷积模型,在性能远超SOTA的同时,计算速度更是狂飙300%!实际上,作为机器学习和深度学习的核心技术,特征提取一直都是研究的热门!它直接影响着模型的准确性、计算效率、可解释性……同时,它也是我们改模型涨点,最好操作的部分!因为可切入点的真的非常之丰富,不管是轻量化、多尺度、时域与频域结合等,都能使模型性能得到提升! 阅读详情

一、时间复杂度&空间复杂度

时间复杂度

时间复杂度不计算时间,计算的是大概的运算次数。 算法的执行时间与原操的执行次数之和成正比

空间复杂度

空间复杂度不计算空间,计算的是大概定义的变量个数。

二、逻辑结构与物理结构

逻辑结构

逻辑结构是指数据对象中数据元素之间的相互关系,是人为了方便运用想象出来的模型。

集合——各个元素之间是“平等”的,类似于数学里面的集合
线性结构——数据结构中的数据元素是一对一关系的
树性结构——数据结构中的数据元素之间存在一对多的层次关系
图形结构——数据结构中的数据元素之间存在多对多的关系

物理结构

物理结构指数据的逻辑结构在计算机中的存储形式,是数据在计算机实实在在的存储方式。

顺序存储结构 ——把数据元素存放在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的。
链式存储结构 ——把数据元素存放在任意的存储单元中,这组存储单元可以是连续的,也可以是不连续的。通过指针来找下一个数据元素的地址。
索引存储结构 ——B+ 树
散列存储结构——哈希存储

优缺点:
在这里插入图片描述

重点:链表存储结构和顺序存储结构的区别?

顺序存储结构:是以数据元素的相对物理位置来表示数据元素之间的逻辑关系的

链表存储结构 :以指针指向来表示数据元素之间的逻辑关系。

在这里插入图片描述

三、常见的数据结构

数组 —————— 一维数组、二维数组
链表 —————— 单链表、循环链表
栈 —————— 先进后出、递归、后缀表达式、函数调用
队列 —————— 先进先出、树的层次遍历、图的广度遍历
树 —————— 二叉树、森林、平衡二叉树、线索二叉树、遍历
图 —————— 有向图、无向图、最小二叉树、遍历、最短路径

数组和链表的区别

在这里插入图片描述
数组的静态分配事先定义长度,不能适应数据动态地增减,链表动态地进行存储分配,可以适应数据动态地增减
数组快速访问数据元素,插入删除不方便;链表查找访问数据不方便,插入删除数据发布

头指针和头结点的区别

在这里插入图片描述
头指针是指在第一个结点之前的指针,它是一个链表存在的标志,是必须存在必不可少的。
头结点是第一个结点之前的结点,它是为了方面在第一个结点之前进行元素的插入和删除操作,它不是必需的,并且数据域也可以不存放信息。

四、受限线性表/特殊线性表(栈、队列、串)

队列:

队列就像我们平时排队一样,按照数据到达的顺序进行排队,每次新插入的一个结点排在队尾,删除一个结点只能从头才能出队。简言之,对元素的到达顺序,按照“先进先出”的原则。

栈:

栈的特点正好与队列相反,按照数据进栈的逆序出栈,即“先进后出”,每次入栈将元素放在栈顶,出栈时也只能从栈顶出栈,与队列类似,一般用定长数组存储栈元素,而不是动态的申请结点空间。进栈一般被叫做压栈,出栈被叫做弹栈。

在这里插入图片描述

串:

串是特殊线性表,限制数据元素为字符,并且串的操作和线性表有较大差别,线性表操作大多以数据元素为操作对象,而串大多以串的整体或模式串作为操作对象。

串的模式匹配

串的模式匹配指子串在主串中的位置,包括暴力匹配算法和KMP算法。
暴力匹配算法:从主串的第一个字符开始,与子串的第一个字符比较,一旦出现不匹配的字符,则主串往后移动一个位置,子串移动子串的第一个位置,并与主串对齐
KMP算法

KMP算法是在简单模式匹配的基础上对串的模式匹配进行优化。

主要的思路是每趟比较过程中让子串先滑动到一个合适的位置。

当发生不匹配时,不同于简单模式匹配的右移一位,而是移动到适合的位置。

这里所移动的位置依靠与NEXT[]数组,求next[]数组的方法是比较前后缀相同元素。

补充:两个栈实现队列

在这里插入图片描述
入队:把全部元素入栈1,出栈1压入栈2,实现与队列相同的顺序。

出队:在栈2 中以此出队即可。

插入新的元素:不应该在栈2内还有元素时,将栈1中插入的元素入栈,而是等栈2所有元素都出队后,再将栈1 中的元素压入栈2。

五、树

对于树这种数据结构而言,最显著的特点就是有且只能有一个根节点(空树除外),每个节点可以有多个子结点,除了根结点,其他结点只能有一个父结点。树的种类繁多,一般谈论的最多的是二叉树,每个结点有不超过两个的子结点。

二叉树&度为2的树

二叉树的特点:
1、每个结点最多有两颗子树,结点的度最大为2。
2、左子树和右子树是有顺序的,次序不能颠倒。
3、即使某结点只有一个子树,也要区分左右子树。
4、二叉树可以是空树、只有一个根结点、根结点只有左子树、根结点只有右子树、根结点左右子树都有。

度为2 的树:树的结点的最大的度为2.

平衡二叉树 & 二叉排序树

二叉排序树(Binary Search Tree,BST,也叫二叉搜索树),构造一棵二叉排序树也很简单,大于根节点的放在根节点的右子树上,小于根结点的放在根结点的左子树上(等于根结点的视情况而定)。如果写程序的话,可以采用递归的方式,而且由于不存在重叠子问题的情况,因此递归的性能已经足够好(不考虑栈溢出的情况)。

二叉排序树在通常情况下可以达到O(lgn)的静态、动态操作的时间复杂度,但是存在一种特殊情况,若输入的本来就是有序的,这时二叉树就退化成了链表。为了消除二叉树对于输入的敏感特性,引入了平衡二叉树(AVL),事实上平衡二叉树应该叫平衡二叉排序树也合理。平衡二叉树只要保证每个节点左子树和右子树的高度差小于等于1就可以了。

哈夫曼树

树的带权路径长度最小的二叉树,也称最优二叉树。
在这里插入图片描述

B树 & B+树

https://blog.youkuaiyun.com/qq_40599849/article/details/123386603?spm=1001.2014.3001.5501

红黑树

R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
在这里插入图片描述
红黑树相比于BST和AVL树有什么优点?

红黑树是牺牲了严格的高度平衡的优越条件为代价,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。红黑树能够以O(log2 n)的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。

相比于BST,因为红黑树可以能确保树的最长路径不大于两倍的最短路径的长度,所以可以看出它的查找效果是有最低保证的。在最坏的情况下也可以保证O(logN)的,这是要好于二叉查找树的。因为二叉查找树最坏情况可以让查找达到O(N)。

红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高,所以在插入和删除中所做的后期维护操作肯定会比红黑树要耗时好多,但是他们的查找效率都是O(logN),所以红黑树应用还是高于AVL树的. 实际上插入 AVL 树和红黑树的速度取决于你所插入的数据.如果你的数据分布较好,则比较宜于采用 AVL树(例如随机产生系列数),但是如果你想处理比较杂乱的情况,则红黑树是比较快的

SOUL.md 人格定制的 7 个高阶技巧:Hermes Agent 精准控制 AI 行为模式 揭示 SOUL.md 的本质是行为契约而非人格设定,介绍7个围绕边界约束的高阶技巧,包括用上下文锚点(INPUT SCOPE/OUTPUT TARGET/CONSTRAINTS)替代角色描述、动态渲染锚点适配CI流程等,显著降低token消耗与人工review耗时。 阅读详情

相关推荐

XCAT集群管理实战:从裸机到节点批量部署

在数据中心与HPC集群运维中,裸机配置与操作系统批量部署是关键环节。PXE引导、IPMI带外管理等基础技术为自动化装机提供了底层支持,而集群管理工具则将这些能力整合为可扩展的运维体系。XCAT作为一款开源集群管理工具,通过数据库驱动的方式统一管理DHCP、TFTP、HTTP等服务,实现从裸机发现、系统安装到电源控制的全流程自动化。本文从XCAT的核心设计出发,详细介绍了环境准备、安装配置、节点定义、镜像分发及常见问题排查,帮助运维人员快速构建高效的集群部署流程,降低规模化管理的复杂度。

weixin_30899023的博客 241

数据结构

数据结构 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。 数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位 数据项:数据的不可分割的最小单位。一

xfyangle的博客 1万+

【Android】汽车电源管理:深入解析CarPowerManager与Suspend To RAM的交互机制

本文深入解析了Android Automotive OS中CarPowerManager与Suspend To RAM(深度睡眠)的交互机制。详细阐述了从车辆发出睡眠请求,到CarPowerManagementService协调应用状态,最终通过内核进入低功耗睡眠的完整流程,并探讨了唤醒机制、开发者实践及功耗优化策略,为车机应用开发与系统优化提供关键指导。

weixin_28339967的博客 292

数据结构知识点总结(理论篇)

绪论 数据结构主要包括数据的逻辑结构、数据的存储结构和数据的操作这三个方面的内容。 数据的逻辑结构分为:线性结构,非线性结构 数据的物理(存储)结构:顺序结构,链式结构 四大基本数据结构: 集合—属于/不属于 线性结构–一对一 树形结构–一对多 图状结构/网状结构–多对多 数据运算:插入 删除 修改 查找 排序 算法的5个特性: 有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出 算法分析的两个主要方面: 时间复杂性和空间复杂性 学习重点:  ◆ 数据结构的“三要素”:逻辑结构、物理(存储)结构及在

weixin_43319452的博客 5364

从零构建PEMFC仿真模型:MATLAB/Simulink中的模块化拆解与系统集成

本文详细介绍了如何在MATLAB/Simulink环境中从零构建质子交换膜燃料电池(PEMFC)仿真模型,包括电化学模型、气体供应系统和热管理系统的模块化实现。通过多物理场耦合技巧和系统集成策略,帮助工程师和研究者高效开发PEMFC控制策略,优化性能并实现实时仿真。

weixin_29294975的博客 361

LEfSe分析避坑指南:如何解决R语言中的常见错误与优化结果可视化

本文提供了R语言中进行LEfSe(线性判别分析)微生物组差异分析的全流程避坑指南。详细解析了从数据格式准备、参数调优(如显著性水平与LDA阈值)、结果可靠性验证到使用ggplot2进行高级可视化的实战技巧,帮助用户规避常见错误,获得更稳健、美观的分析结果。

weixin_29098391的博客 362

数据结构:预备理论知识+ 顺序表(超详细)

程序 = 数据结构 + 算法1.定义:数据结构是指数据与数据之间的逻辑结构、存储结构和运算操作。主要是指数据与数据之间的逻辑物理关系:线性关系:数据与数据之间满足一对一的关系:线性表、栈、队列层次关系(树形关系):数据与数据之间满足一对多的关系:树、二叉树网状关系(图形关系):数据与数据之间满足多对多的关系:图数据在内存当中的存储方式顺序存储:在内存当中开辟一块连续的存储空间链式存储:数据在内存当中不需要开辟一块连续的空间为了让数据与数据之间建立联系,我们把每一个数据称之为结点,结点有两部分组成:数据域和指

weixin_61448242的博客 584

精度0.01%决定续航多20km|新能源汽车研发测试:功率分析仪到底有多硬核?

新能源汽车测试、功率分析仪、电驱系统、效率MAP、谐波THD、GB/T18488、CLTC工况、三电测试、台架标定、能量流分析。中的核心作用,用公式、思维导图、实战金句与避坑指南,帮研发测试人员把准数据、提效率、降返工,看完就能落地用。点击关注,进公众号主页查看历史文章,**台架接线图、效率MAP模板、GB/T18488测试清单等。优化弱磁/调制策略,高效区占比提升5%,CLTC续航直接+8~20km。同样工况,两次数据差0.8%,报告根本没法交。结果:数据飘、定位慢、反复返工、认证不过。

优快云-新能源汽车研发测试专业博主 170

数据结构(全)

线性结构, 树形结构, 图结构, 排序, 查找, 数据结构, 算法

s6664的博客 11万+

安装并新建windows下wxwroks7.0 bootrom工程

安装licence,将zwrsLicense-vx7-perm.lic粘贴到安装目录C盘WindRiver/license下。现在双击Workbench 4,新建vxworks7.0工程,会出现下面的情况,因为没有licence。编译完成binaries下生成wxwroks x86格式,可以修改bootrom硬件信息的配置了。单击x86_wxwroks工程右键,build project编译工程。双击桌面Workbench 4打开,新建windows下工程。新建完成,选择finish。

wangjie36的博客 1923

YOLOv8+SAM强强联合:用分割“喂“检测,复杂背景下作物AP从72%干到77.7%,杂草误检降60%

目标与背景高度相似:如农业(作物vs杂草)、工业(零件vs台面)、医学(病灶vs正常组织);遮挡严重的场景:如密集人群(人被遮挡)、森林(树木被枝叶遮挡);小目标密集场景:如无人机航拍(远处小目标易混背景)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 793

【数据结构】数据结构概述

你有没有过整理书架的经历?当你面对一堆杂乱无章的书籍时,该如何摆放它们,才能在下次找书时迅速定位到目标呢?随意摆放固然方便放置新书,但找书时却如大海捞针;按字母顺序有序摆放,查找起来相对容易,可插入新书时又十分麻烦;先分类再按字母顺序摆放似乎不错,可又面临空间分配和类别划分的难题。其实,在计算机的世界里,也面临着类似的问题,这就引出了我们今天的主角 —— 数据结构。 在计算机科学中,数据结构是一门研究如何组织、存储和管理数据的学科。它就像是一个精心设计的 “数据书架”,让计算机能够高效地处理各

大雨淅淅的博客 921

[QMT量化交易小白入门]-七十三、主力资金动向:板块与个股资金流数据API(量化python代码解析)

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1119

数据结构之理论学习篇

链式存储是通过指针将数据元素分散地存储在内存中,每个元素包含数据和一个指向下一个元素的指针。在链式存储结构中,元素的物理存储位置不一定连续,元素的访问需要通过指针进行链式遍历。这里的结构就是指数据元素之间存在的关系,分为。在顺序存储结构中,可以通过元素在内存中的物理地址来直接访问元素。链式存储适用于频繁插入和删除元素的动态存储结构,适合动态数据的存储和操作。顺序存储适用于对元素的随机访问较多的情况,适合静态存储结构;的关系,特点是元素之间只有前后相邻的关系。的关系,元素之间没有前后相邻的关系。

m0_67732316的博客 223

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据结构HASH总结一:理论学习篇

数据结构HASH总结一:理论学习篇  数据结构HASH总结二:程序学习篇 数据结构HASH总结三:实践基础篇 数据结构HASH总结四:程序高级篇 数据结构HASH总结五:Nginx中的HASH(version 0.1) 转载请注明出处http://blog.youkuaiyun.com/yankai0219/article/details/8185796 零、学习方法

www.keything.net 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据结构1——链表理论篇

只学会还远远不够,更要通过刷题孰能生巧如有不足还请指出,敬请期待下一篇栈与队列表。[外链图片转存中…(img-b5B2qveu-1751081681403)]输入:head = [1,2,3,4,5]输出:[5,4,3,2,1][外链图片转存中…(img-Iz6lSm9G-1751081681403)]输入:head = [1,2]输出:[2,1]链表中节点的数目范围是[0, 5000]/*** int val;* };*/public://三步走=nullptr){

2401_88685396的博客 984

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SwiftNIO NIOHTTP1Server:官方 HTTP 服务器示例的启动方式、端点实现与源码级剖析

`NIOHTTP1Server` 是 SwiftNIO 仓库内置的官方示例可执行程序,它用 `NIOHTTP1` + `NIOPosix` 构建了一个功能完整的 HTTP/1.1 服务器:支持 TCP、Unix Domain Socket 乃至标准输入/输出三种绑定方式,覆盖 `sendfile` 零拷贝发文件、非阻塞分块读文件、chunked 流式响应、trailers、keep-alive 与

gitblog_00077的博客 154

数据结构(理论篇下)

六、图 什么是图? 一种较线性表和树更为复杂的数据结构。图结构中结点之间的关系是任意的,图中任何两个节点都可能有关系。图通常用来描述某些事物之间的某种特定关系 ,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。 有向图的基本算法: 拓扑排序(数据结构之拓扑排序)、联通分量、最短路径(Dijkstra算法和Floyd算法)。 无向图的基本算法:最小生成树(Prime算法。Kruska算法)、DFS、BFS、MFS、最短路径、最大连通图、强联通分量。 连通图、强连通图:有向图任意两个顶点都有路径相

qq_40599849的博客 2312

数据结构【树】(理论篇)

树的理论部分~

2301_80216111的博客 863

数据结构理论篇(期末突击)

树与二叉树、图、查找

我要学编程的博客 1710

javascript数据结构浅析(理论篇)

什么是数据结构? 在计算机科学中,数据结构(英语:data structure)是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构起源于程序设计,它不是使我们怎么学会编码,而是为我们提供一种编程思想,具有更好的思路。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 数据结构能做什么?...

acu5817的博客 147

【数据结构】二叉树——理论篇

二叉树的相关概念

Shun_Hua的博客 2219

Java数据结构之二叉树—理论图文篇

一对一的线性结构,如顺序表和链表,但还有很多一对多的情况,所以引入“树”,一对多的结构。概念:一棵二叉树是结点的一个有限集合,该集合:1. 或者为空2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。从上图可以看出:1. 二叉树不存在度大于2的结点2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树注意:对于任意的二叉树都是由以下几种情况复合而成的:1. 若规定根结点的层数为1,则一棵非空二叉树的第i层上最多有2^i - 1(i>0)个结点2. 若。

2301_78838401的博客 1134

数据结构系列之LRU算法理论篇

更多文章,欢迎关注微信公众号:深夜程猿 什么是LRU算法 LRU算法中文名叫“最近最少使用”,是一种数据缓存淘汰算法,可以实现基于磁盘和内存的缓存淘汰 算法原理 LRU算法根据数据的历史使用记录来进行数据淘汰。LRU算法认为,最近被使用过的数据,那么将来会更多的被使用。LRU实现数据淘汰的原理就是当数据缓存达到预设的最大值时,就会淘汰最久未被使用的数据。 使用场景 LRU算法适用于需要经常访问某...

weixin_34128839的博客 544

数据结构学习之二叉树(理论篇)

注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: http://blog.youkuaiyun.com/ab198604         一、什么是树?         在前几篇的博文中主要讲述的是链式存储这种数据结构,它们的用途非常广泛,但是在实际的应用中,还存在着另一种非常重要的数据结构,它就是树。树的结构示意图如下所示:         上图就是一种数

落魄影子 2万+

Arduino IDE跨平台安装全指南:驱动、权限与系统兼容性详解

Arduino IDE作为嵌入式开发入门核心工具,其本质是依赖操作系统底层机制(如Windows驱动签名、macOS Gatekeeper、Linux udev规则)实现硬件通信的跨平台集成环境。理解USB转串口芯片(CH340/CP2102/FTDI)与系统权限模型的交互原理,是解决90%首次烧录失败的关键技术基础。该工具链的技术价值在于将底层硬件抽象为统一编程接口,支撑从Arduino Uno到ESP32、STM32等多平台快速原型开发。典型应用场景包括物联网传感器节点搭建、教育实验平台部署及创客项目快

weixin_33910137的博客 212
上一篇: 网络补充协议(八)
下一篇: 数据结构(理论篇下)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值