- 博客(66)
- 收藏
- 关注
原创 一、数据结构专栏导航页(王道408)
这篇文章是一位考研学生分享的数据结构学习笔记合集。作者提供了详细的数据结构学习资料,包括代码示例、图表解释和习题解答,全部免费开放。目前专栏主要包含数据结构内容,每隔一天更新两章,后续会逐步添加其他考研科目笔记。文章末尾附有已完成的10个数据结构章节链接,包括线性表、栈、队列、树等主题,并承诺持续更新。作者以轻松的笔调分享学习资源,同时也表达了对考研学子的祝福和共勉之意。
2025-09-29 10:49:46
814
原创 数据结构——六十、快速排序(王道408)
快速排序是一种基于交换的排序算法,通过分治策略将待排序序列划分为两部分。算法首先选取基准元素(通常为首元素),使用双指针low和high从序列两端向中间扫描,确保low指针左侧元素均小于基准,high指针右侧元素均大于等于基准。通过不断交换元素位置,最终将基准元素放置到正确位置,完成一次划分。然后递归地对左右子序列重复上述过程,直至所有元素有序。示例中展示了以49为基准的一次完整划分过程,通过双指针交替移动和元素交换实现排序。该算法平均时间复杂度为O(nlogn),是一种高效的排序方法。
2025-12-14 12:01:57
1160
原创 数据结构——五十九、冒泡排序(王道408)
本文介绍了冒泡排序算法的基本思路、具体实现和性能分析。冒泡排序通过相邻元素比较交换实现排序,每趟将最小(或最大)元素"冒"到序列前端。算法采用双重循环实现,空间复杂度O(1),最好时间复杂度O(n),最坏和平均时间复杂度O(n²)。该算法稳定,既适用于顺序表也适用于链表。文章通过图示详细演示了排序过程,并给出了C语言实现代码,最后总结了算法特点和重要考点。
2025-12-14 11:39:21
631
原创 数据结构——五十八、希尔排序(Shell Sort)(王道408)
摘要:本文详细介绍了希尔排序算法的实现原理和性能分析。文章首先阐述了希尔排序通过分组插入排序逐步逼近全局有序的核心思想,给出了具体实现步骤和代码示例。在性能分析部分,指出其空间复杂度为O(1),时间复杂度取决于增量序列选择,最坏情况下为O(n²),平均可达O(n^1.3)。最后总结了希尔排序不稳定、仅适用于顺序表的特点,并提供了知识要点回顾。全文通过图示和代码示例直观展示了希尔排序的分组排序过程,对理解这一经典排序算法具有重要参考价值。
2025-12-10 14:44:49
1062
原创 数据结构——五十七、插入排序(王道408)
本文介绍了插入排序算法的基本概念和实现过程。插入排序通过将待排序元素逐个插入已排序子序列中完成排序,具有稳定性。文章详细演示了手动排序步骤,包括元素比较和后移操作。代码实现部分提供了带哨兵和不带哨兵两种版本,哨兵版本利用数组首位减少边界判断。算法分析指出其空间复杂度为O(1),最好时间复杂度O(n)(完全有序时),平均和最坏情况下为O(n²)。插入排序适合小规模或基本有序的数据排序。
2025-12-10 14:36:15
666
原创 数据结构——五十六、排序的基本概念(王道408)
本文介绍了排序的基本概念与评价指标。排序是将元素按关键字重新排列的过程,评价标准包括时间复杂度、空间复杂度和稳定性(相同关键字元素顺序是否改变)。排序分为内部排序(数据全在内存)和外部排序(数据量过大需磁盘读写)。文章指出稳定算法未必优于不稳定算法,需视需求而定,并提供了可视化学习资源链接。
2025-12-09 13:32:05
570
原创 数据结构——五十五、散列查找的性能分析(线性探测法)(王道408)
本文通过实例分析散列表的性能指标。首先演示了如何构造散列表(长度为16,散列函数H(key)=key%13,采用线性探测法处理冲突),计算出查找成功的ASL为2.5,查找失败的ASL为7。当删除元素20后,查找成功的ASL变为2.63。其次介绍了装填因子α的概念,指出α接近0.7-0.8时应考虑扩大散列表。最后解释了聚集现象,说明线性探测法容易导致同义词和非同义词堆积,影响查找效率。通过具体案例(散列表长度27,H(key)=key%23)展示了聚集现象的表现形式。
2025-12-09 13:26:10
1220
原创 数据结构——五十四、处理冲突的方法——开放定址法(王道408)
摘要:本文系统介绍了开放定址法的四种常用冲突处理方法。开放定址法通过探测序列(线性探测、平方探测、双散列、伪随机序列)为冲突元素寻找空闲位置。文中详细阐述了每种方法的原理、公式及操作步骤,并通过具体示例演示了插入、查找和删除过程。特别强调删除操作需采用逻辑删除标记,避免截断探测路径。这些方法在处理散列表冲突时各具特点,为数据存储和检索提供了有效解决方案。(149字)
2025-12-07 14:00:13
855
原创 数据结构——五十三、处理冲突的方法——拉链法(王道408)
本文介绍了散列表的拉链法实现。主要内容包括:1)拉链法的基本概念,即通过链表存储同义词;2)插入操作步骤:计算散列地址并用头插/尾插法插入链表;3)查找操作流程:计算地址后顺序查找链表,统计关键字对比次数;4)删除操作:查找目标元素后从链表中移除。文章还讨论了查找长度的计算标准,并提供了具体示例演示各操作过程。最后指出保持链表有序可略微提高查找效率,并附上了相关算法可视化工具链接。
2025-12-07 13:47:36
996
原创 数据结构——五十二、散列函数的构造(王道408)
本文总结了设计散列函数的注意事项和常用方法。设计散列函数时需注意:定义域覆盖所有关键字、值域不越界、减少冲突、计算简单。主要方法包括:除留余数法(取不大于表长的最大质数)、直接定址法(适用于连续关键字)、数字分析法(选取分布均匀的数码位)、平方取中法(取平方值的中间位)。其中重点阐述了除留余数法对质数取余可减少冲突的原因,并通过具体示例说明了各方法的适用场景和实现要点。这些方法可根据关键字特性选择使用,以达到均匀分布和高效存储的目的。
2025-11-23 20:57:51
973
原创 数据结构——五十一、散列表的基本概念(王道408)
本文介绍了散列表(哈希表)的基本概念和工作原理。散列表通过散列函数(如H(key)=key%13)将关键字映射到存储地址,实现快速查找(理想情况下时间复杂度O(1))。文章重点讨论了冲突(不同关键字映射到同一地址)及其解决方法:拉链法(用链表存储同义词)和开放定址法(寻找其他空闲位置)。最后总结了散列表的核心考点,包括散列函数设计、冲突处理策略等。散列表作为一种高效的数据结构,在理想情况下能实现常数级查找性能,但需要合理处理冲突问题。
2025-11-23 20:52:32
911
原创 数据结构——五十、B+树(王道408)
B+树是一种多路平衡查找树,其核心特性包括:1)分支节点仅存储子节点的最大关键字和指针;2)所有关键字都出现在叶子节点并有序链接;3)查找必须到达叶子节点才能确定结果。相比B树,B+树的非叶节点不存储记录地址,使得单个磁盘块可容纳更多关键字,从而降低树高,减少磁盘I/O次数。B+树支持高效的多路查找和顺序遍历,广泛应用于数据库索引等场景。其结构设计兼顾了查找效率和存储密度,通过严格的平衡规则确保查询性能稳定。
2025-11-21 19:08:44
764
2
原创 数据结构——四十九、B树的删除与插入
B树插入操作的核心是保持节点关键字数量的平衡。当插入导致节点关键字超过上限时,会进行分裂:中间关键字提升到父节点,左右部分形成新节点。若父节点也超限,则继续向上分裂,可能导致树高增加。以5阶B树为例,演示了从初始插入到节点分裂的全过程,包括如何确定插入位置、处理节点分裂以及关键字提升等关键步骤。所有插入操作都在最底层终端节点进行,确保B树特性得以维持。
2025-11-21 18:58:01
1289
2
原创 数据结构——四十七、红黑树的删除(王道408)
本文主要探讨红黑树的删除操作。首先指出删除操作的时间复杂度为O(log₂n),处理方式与二叉排序树相同。删除后可能破坏红黑树特性,需调整颜色和位置。重点分析了两种情况:1) 删除只有左/右孩子的结点时,用其孩子替代并变黑;2) 删除无孩子结点时,红结点直接删除,黑结点则变为"双黑结点"并需特殊处理。通过实例演示了LL型和RR型双黑结点的调整过程,包括颜色变换和旋转操作。最后强调必须通过特定方法将双黑结点恢复为单黑,以维持红黑树的性质。
2025-11-19 17:49:13
904
原创 数据结构——四十六、红黑树的插入(王道408)
红黑树插入操作遵循二叉排序树规则,新节点默认红色。调整策略分为三种情况:1)根节点直接染黑;2)叔节点红色时,对父、叔、爷节点染色,并将爷节点视为新节点;3)叔节点黑色时,根据LL/RR/LR/RL四种不平衡类型进行旋转(单旋或双旋)并重新染色。插入时需维护"不红红"特性,通过颜色反转和旋转操作保持平衡。文章通过具体案例演示了各种插入情况下的调整过程,包括LL型的右旋、RR型的左旋、LR型的左右双旋和RL型的右左双旋操作,最终形成符合红黑树特性的平衡结构。
2025-11-18 09:56:05
1392
原创 数据结构——四十五、红黑树(王道408)
本文介绍了红黑树(RBT)的基本概念与应用。红黑树作为二叉排序树的改进,通过颜色约束保持近似平衡,相比AVL树大幅降低了插入删除时的调整开销。文章详细阐述了红黑树的五大特性(根黑、叶黑、不红红、黑路同),并通过实例演示了特性验证方法。此外,讲解了黑高计算、路径长度性质等核心概念,以及红黑树与平衡二叉树的适用场景对比。最后指出红黑树在查找操作上与普通BST、AVL树相同,时间复杂度为O(logn)。该文为理解红黑树的核心特性与应用场景提供了系统性的介绍。
2025-11-18 09:31:55
877
原创 数据结构——四十四、平衡二叉树的删除操作(王道408)
平衡二叉树的删除操作需要确保删除后仍保持二叉排序树特性和平衡性。删除步骤包括:1)按二叉排序树规则删除节点;2)向上查找最小不平衡子树;3)确定最高儿子和孙子;4)根据孙子位置(LL/RR/LR/RL)进行相应旋转调整。删除后若不平衡向上传导,需继续调整。文中通过删除55和32两个实例,分别展示了仅调整儿子节点和需要调整孙子节点的两种情况,并说明旋转后可能出现的不平衡传导现象。关键点在于通过旋转操作恢复平衡,同时保持二叉排序树的有序性。
2025-11-16 14:11:07
1286
原创 数据结构——四十三、平衡二叉树(王道408)
平衡二叉树(AVL树)是一种特殊的二叉排序树,其任一结点的左右子树高度差不超过1。本文首先介绍了平衡二叉树的基本概念,包括平衡因子、最小不平衡子树等定义。重点分析了平衡二叉树的插入操作,当插入新结点导致不平衡时,需要通过旋转调整恢复平衡。具体以LL不平衡情况为例,详细阐述了右单旋转的操作步骤和逻辑,通过调整最小不平衡子树使树重新达到平衡状态。文章还给出了平衡二叉树的C语言结点定义,为后续代码实现提供了基础。通过理论分析和示例演示,系统地讲解了平衡二叉树的特性和维护方法。
2025-11-16 12:00:00
1605
原创 数据结构——四十二、二叉排序树(王道408)
本文介绍了二叉排序树(BST)的定义、查找、插入、构造和删除操作。二叉排序树是一种左子树结点值小于根结点值,右子树结点值大于根结点值的特殊二叉树,其中序遍历可得到递增序列。查找操作通过比较关键字值在左右子树中递归搜索。插入操作根据关键字大小决定插入位置。构造BST即不断插入新结点的过程。删除操作需分三种情况处理:删除叶子结点、仅有一棵子树的结点或两棵子树的结点。对于同时有左右子树的结点,可采用直接后继代替法处理。文章通过图示和代码示例详细说明了各操作的实现过程和应用场景。
2025-11-13 09:22:08
945
原创 数据结构——四十一、分块查找(索引顺序查找)(王道408)
分块查找算法是一种结合顺序查找和索引查找的搜索方法。其核心思想是将无序元素分成若干有序块,建立索引表存储各块最大值和区间范围。查找时先通过顺序或折半方式定位索引块,再在该块内进行顺序查找。算法特点包括块内无序、块间有序。查找效率分析表明,当块数为√n时,顺序查找索引表可获得最优ASL(√n+1),而折半查找索引表则使ASL为⌈log₂(b+1)⌉+(s+1)/2。对于动态查找表,采用链式存储能有效提升插入/删除效率。该算法在特定数据分布下能显著提高查找性能。
2025-11-13 09:12:54
824
原创 数据结构——四十、折半查找(王道408)
本文介绍了折半查找(二分查找)的基本思想、实现方法和查找效率分析。折半查找仅适用于有序顺序表,通过不断缩小查找区间来定位目标元素。文章通过示例演示了查找成功和失败的流程,并提供了升序和降序排列时的C语言实现代码。在效率分析部分,通过构建判定树计算了成功和失败情况下的平均查找长度(ASL),指出折半查找判定树具有右子树结点数-左子树结点数=0或1的特性,且一定是平衡二叉树和二叉排序树。最后说明元素个数为n时,判定树高度为⌈log₂(n+1)⌉(不含失败结点)或⌈log₂(n+1)⌉+1(含失败结点)。
2025-11-09 20:33:47
1404
原创 数据结构——三十九、顺序查找(王道408)
本文介绍了顺序查找算法的基本实现与优化方法。顺序查找是一种线性查找算法,通过逐一比较元素实现查找。文章首先给出了顺序查找的一般实现代码,然后介绍了哨兵机制优化方法,该方式通过减少越界判断提高效率。对于有序表的情况,可以通过提前终止查找进一步优化性能。此外,还讨论了根据元素被查概率调整存储位置的优化策略,虽然能提高查找成功效率,但会影响查找失败时的性能。最后指出顺序查找的时间复杂度始终为O(n)。本文通过算法思想、代码实现、效率分析和优化策略,全面介绍了顺序查找这一基础算法。
2025-11-09 15:03:15
990
原创 数据结构——三十八、查找的基本概念(王道408)
本文介绍了数据结构中的查找概念及相关知识。主要内容包括:查找的定义(在数据集合中寻找符合条件的元素)、查找表(用于查找的数据集合)和关键字(唯一标识元素的属性)。文章区分了静态查找表(仅查询)和动态查找表(支持增删改查),并指出评价查找算法的关键指标是平均查找长度(ASL),它反映了算法的时间复杂度。最后通过二叉排序树的例子展示了如何计算查找成功/失败时的ASL。本文为数据结构学习提供了基础的查找理论框架。
2025-11-03 20:35:20
908
原创 数据结构——三十七、关键路径(王道408)
AOE网是一种用顶点表示事件、有向边表示活动、边权值表示活动耗时的有向图。关键路径是AOE网中具有最大路径长度的路径,决定整个工程的最短完成时间。求解关键路径需要分步骤计算各事件的最早/最迟发生时间(ve/vl)和各活动的最早/最迟开始时间(e/l)。其中时间余量d=l-e为零的活动为关键活动,由关键活动组成的路径即为关键路径。通过拓扑排序计算ve,逆拓扑排序计算vl,最终可确定关键路径。
2025-11-03 20:29:04
895
原创 数据结构——三十六、拓扑排序(王道408)
摘要:AOV网(Activity On Vertex Network)是用顶点表示活动的有向无环图(DAG),用于描述工程中各活动的先后关系。拓扑排序是对AOV网顶点的一种线性排序,满足若存在路径从A到B,则B必在A之后。排序过程通过不断选择入度为0的顶点并删除其出边实现。若最终输出的顶点数少于总数,说明图中存在回路。代码采用邻接表存储,时间复杂度为O(|V|+|E|)。逆拓扑排序则选择出度为0的顶点进行类似处理。该算法可有效解决任务调度等实际问题。
2025-11-02 10:05:33
1416
原创 数据结构——三十五、有向无环图描述表达式(王道408)
本文介绍了有向无环图(DAG)在描述算术表达式中的应用。DAG通过消除表达式树中的重复子表达式来优化存储空间,相比树结构更节省空间。文章详细讲解了如何将树结构转换为DAG,包括识别公共子表达式、合并相同操作数节点等步骤。通过2019年统考真题示例,展示了构建DAG的具体方法和规律:操作数不重复排列、按运算符生效顺序分层添加节点、合并同一层可合并运算符等。最后指出DAG描述表达式的结果不唯一,取决于运算符生效顺序。DAG在优化表达式存储空间方面具有重要应用价值。
2025-11-02 09:48:07
941
原创 数据结构——三十四、Floyd算法(王道408)
Floyd算法是一种求解图中所有顶点对之间最短路径的动态规划算法。该算法由1978年图灵奖得主Robert W. Floyd提出,通过逐步增加中转顶点来优化路径长度。算法过程分为多个阶段:初始阶段基于邻接矩阵,随后每个阶段允许通过新增的中转顶点来更新最短路径。核心思想是比较直接路径和通过中转顶点的路径长度,若后者更优则更新矩阵。最终结果包含两个矩阵:存储最短路径长度和相应中转顶点。通过递归查询中转矩阵即可重构具体路径。该算法时间复杂度为O(n³),适用于解决带权图的最短路径问题。
2025-10-30 20:37:51
832
原创 数据结构——三十三、Dijkstra算法(王道408)
本文介绍了Dijkstra最短路径算法及其应用。首先指出BFS算法在求单源最短路径时的局限性,仅适用于无权图或权值相同的图。然后详细阐述了Dijkstra算法的实现思路:通过维护三个数组(标记已找到最短路径、最短路径长度、前驱顶点),逐步确定各顶点的最短路径。算法步骤包括初始化数组、选择当前最短路径顶点、更新相邻顶点信息等。最后通过具体案例演示了算法执行过程,展示了如何通过迭代更新找到从起点到各顶点的最短路径。Dijkstra算法是解决带权图最短路径问题的经典方法,在数据结构等领域有重要应用。
2025-10-30 20:28:13
867
原创 数据结构——三十二、最短路径问题——BFS算法(王道408)
本文介绍了求解无权图单源最短路径的BFS算法。首先对最短路径问题进行了分类,分为单源最短路径和每对顶点间最短路径,分别对应BFS/Dijkstra和Floyd算法。重点讲解了BFS算法的实现过程:通过队列逐层遍历,记录各顶点到源点的距离和路径前驱,最终得到最短路径。相比普通BFS,增加了距离数组d和前驱数组path的记录。文章还指出广度优先生成树的层数反映了顶点到源点的最短距离。最后附上了代码实现和示例图解,帮助理解算法执行过程。
2025-10-28 20:52:03
794
原创 数据结构——三十一、最小生成树(王道408)
本文介绍了最小生成树(MST)的概念及其求解方法。生成树是包含图中所有顶点的极小连通子图,边数为顶点数减1。最小生成树是权值之和最小的生成树,可能不唯一但总权值唯一。文章重点讲解了Prim算法的实现步骤:从初始顶点出发,逐步选择权值最小的边将新顶点纳入生成树,直到所有顶点都被包含。算法通过维护lowCost数组记录各顶点到生成树的最小代价,并不断更新该数组来实现最小生成树的构建。适用于带权连通无向图的最小生成树求解。
2025-10-28 20:44:44
943
原创 数据结构——三十、图的深度优先遍历(DFS)(王道408)
本文探讨了图与树的深度优先遍历(DFS)之间的联系。树的先根遍历从根节点出发,依次访问其子树;而图的DFS在此基础上增加了访问标记数组,防止重复访问。通过递归算法实现:从起始顶点v出发,访问v并标记为已访问,然后依次检查v的邻接顶点w,若w未被访问则递归调用DFS。以具体图示为例,详细展示了从顶点2出发的DFS调用栈和访问标记的变化过程,验证了该算法的正确性。DFS与树的先根遍历逻辑相似,主要区别在于图需要处理顶点可能被多次访问的情况。
2025-10-23 22:10:34
713
原创 数据结构——二十九、图的广度优先遍历(BFS)(王道408)
本文探讨了图的广度优先遍历(BFS)算法。首先通过与树的广度优先遍历对比,指出两者在横向搜索节点方面的相似性,以及图遍历中可能遇到的环路问题。接着详细介绍了BFS的实现思路:使用访问标记数组、辅助队列和两个基本操作(FirstNeighbor和NextNeighbor)来获取相邻节点。代码实现部分展示了从初始顶点出发,依次访问并标记相邻顶点并入队的过程。通过示例图解说明了算法执行时队列和访问标记的动态变化,帮助理解BFS如何逐层探索图中的节点。文章系统性地阐述了BFS的核心概念和实现方法。
2025-10-23 21:58:21
1268
原创 数据结构——二十八、图的基本操作(王道408)
本文总结了图的两种常见存储方式(邻接矩阵和邻接表)及其基本操作实现。首先介绍了图的12种基本操作,包括判断边是否存在、查找邻接边、插入/删除顶点和边等。重点分析了邻接矩阵和邻接表的初始化方法,给出了C语言定义和辅助函数实现。针对"判断边是否存在"和"查找邻接边"两个核心操作,分别从时间复杂度(邻接矩阵O(1),邻接表O(V))和代码实现进行了详细说明,并配以图示说明。最后还区分了无向图和有向图的不同处理方式。这些内容为考研数据结构中图的重点考察内容。
2025-10-21 16:56:40
997
原创 数据结构——二十七、十字链表与邻接多重链表(王道408)
本文介绍了两种优化的图存储方案:十字链表存储有向图和邻接多重链表存储无向图。十字链表通过顶点节点和弧节点的双向链接,高效地记录入边和出边信息,空间复杂度为O(|V|+|E|)。邻接多重链表通过顶点和边节点的互连,避免数据冗余,每条边只存储一份数据,空间复杂度同样为O(|V|+|E|)。这两种方法分别针对有向图和无向图的特点进行了优化,相比邻接矩阵和邻接表在空间利用和操作效率上更具优势。
2025-10-21 16:39:29
1114
原创 数据结构——二十六、邻接表(王道408)
本文介绍了图的邻接表存储结构及其应用。邻接表采用链式存储方式,通过顶点数组和边链表实现图的表示。文章详细讲解了无向图和有向图的存储方法,分析了空间复杂度,并阐述了如何计算节点的度数。对于有向图,重点讨论了入度和出度的求解方法。同时指出邻接表表示方式不唯一的特性,与邻接矩阵的唯一性形成对比。最后总结了重要考点,包括邻接表的优缺点、适用场景以及时间复杂度分析。这种存储结构适合存储稀疏图,空间效率较高。
2025-10-20 08:57:14
960
2
原创 数据结构——二十五、邻接矩阵(王道408)
本文介绍了邻接矩阵在图论中的定义与应用。文章首先给出了邻接矩阵的标准数学定义,说明如何用0/1矩阵表示顶点间的连接关系。通过无向图和有向图的具体示例,详细讲解了邻接矩阵的构建方法及其C语言实现代码。重点阐述了如何利用邻接矩阵求取顶点的度、入度和出度,并分析了时间复杂度。此外,文章还介绍了带权图的邻接矩阵表示法,探讨了邻接矩阵的空间复杂度、适用场景(稠密图)和对称性质。最后,说明了邻接矩阵的数学性质,即矩阵幂次与路径数的关系,并总结了邻接矩阵的优缺点及重要考点。全文系统性地介绍了邻接矩阵的理论基础和实践应用。
2025-10-20 08:50:58
800
原创 数据结构——二十四、图(王道408)
本文介绍了图的基本概念和逻辑结构。图由顶点集V和边集E组成,分为无向图和有向图。无向图边无序,有向图边有序。简单图不存在重复边和自环边,而多重图允许。顶点的度在无向图中为相连边数,有向图中分为入度和出度。路径分为简单路径和回路,连通性分为连通和强连通。子图包括一般子图和生成子图,连通分量和强连通分量是极大连通子图。连通图的生成树是极小连通子图,非连通图的生成森林由各连通分量的生成树组成。
2025-10-18 15:37:07
1553
原创 数据结构——二十三、并查集的终极优化(王道408)
本文介绍了并查集(Disjoint Set)的优化方法,重点分析了路径压缩技术。通过将查找路径上的所有节点直接挂载到根节点,使树高显著降低。文章详细阐述了压缩路径的实现原理和代码示例,并对比了原始版本、Union优化和Find优化三种方式的时间复杂度:从O(n²)优化到O(nα(n)),其中α(n)是增长极慢的函数。最后提供了可视化工具链接帮助理解算法过程。全文简明扼要地讲解了并查集的核心优化思路——尽可能降低树高,提升查询效率。
2025-10-18 08:05:49
683
原创 数据结构——二十二、并查集(王道408)
本文介绍了并查集(Disjoint Set)的逻辑结构、存储实现和优化方法。主要内容包括:1)用互不相交的树表示集合,通过查操作(Find)和并操作(Union)实现集合操作;2)使用双亲表示法存储结构,给出初始化、查、并的代码实现;3)提出优化方案,通过小树合并到大树的方式控制树高,将查操作的时间复杂度从O(n)优化到O(log₂n)。并查集是一种高效处理不相交集合的数据结构,适用于需要频繁查询和合并集合的场景。文章还总结了并查集的重要考点和知识点框架。
2025-10-17 23:31:01
1000
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅