《数据结构 & 算法》
文章平均质量分 66
融码一生
专注 Python 相关应用(数据分析、Web 服务 & 爬虫、机器学习 & 深度学习、NLP)、算法、C/C++
展开
-
7.5、内存紧缩(内存碎片化处理)
前边介绍的有关动态内存管理的方法,无论是边界标识法还是伙伴系统,都是以将空闲的存储空间链接成一个链表(即可利用空间表)对存储空间进行分配和回收。原创 2024-04-16 07:36:12 · 177 阅读 · 0 评论 -
7.4、无用单元收集(垃圾回收机制)
通过前几节对可利用空间表进行动态存储管理的介绍,运行机制可以概括为:当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内存。这两部操作都是在用户给出明确的指令后,系统对存储空间进行有效地分配和回收。原创 2024-04-16 07:34:57 · 144 阅读 · 0 评论 -
7.3、伙伴系统:管理动态内存
前面介绍了系统在分配与回收存储空间时采取的边界标识法。本节再介绍一种管理存储空间的方法:伙伴系统。原创 2024-04-16 07:33:36 · 201 阅读 · 0 评论 -
7.2、边界标识法管理动态内存
本节介绍一种解决系统中内存碎片过多而无法使用的方法:边界标识法。原创 2024-04-16 07:30:44 · 814 阅读 · 0 评论 -
7.1、动态内存管理机制
内存不断分配与回收的过程会产生诸多内存碎片,通过利用数据结构,内存碎片化的问题能得到有效解决。无论是哪种操作系统,其内存管理机制都使用了大量数据结构的知识,大大提高内存管理的效率。原创 2024-04-16 07:29:27 · 865 阅读 · 0 评论 -
6.9、移动迷宫小游戏(升级版)
● 《移动迷宫》小游戏中,使用回溯法帮助骑士在迷宫中找到了通往出口的一条通路。● 《移动迷宫》升级版:迷宫只有两个门:一个入口、一个出口。一个骑士骑马从入口走进迷宫,迷宫中设置有很多墙壁,对前进方向造成障碍。现需要你从迷宫中找到一条最短的通路,将行走路线和行走的最短距离告知骑士。原创 2024-04-16 00:15:00 · 596 阅读 · 0 评论 -
6.8、最短路径求解
只需要确定起点和终点,导航会自动规划出可行的距离最短的道路。这是最短路径在实际生活中最典型的应用。原创 2024-04-15 23:45:00 · 889 阅读 · 0 评论 -
6.7、AOE 网求关键路径
拓扑排序只适用于 AOV 网,本节所介绍的求关键路径针对的是和 AOV 网相近的 AOE 网。原创 2024-04-15 23:15:00 · 401 阅读 · 0 评论 -
6.6、拓扑排序算法
拓扑排序指将有向无环图(DAG 图)中的顶点按图中指定的先后顺序进行排序。原创 2024-04-15 22:00:00 · 317 阅读 · 0 评论 -
6.5、重连通图、重连通分量
在无向图中,如果任意两个顶点之间含有不止一条通路,则这个图为重连通图。在重连通图中删除某个顶点及该顶点相关的边后,图中各顶点之间的连通性不会被破坏。原创 2024-04-15 21:30:00 · 452 阅读 · 0 评论 -
6.4.3、最小生成树求解
含有 n 个顶点的连通图可能包含多种生成树,如下图所示:原创 2024-04-15 21:00:00 · 1078 阅读 · 0 评论 -
6.4.2、非连通图的生成森林
对于给定的无向图,如何构建它们相对应的生成树或生成森林?原创 2024-04-15 19:00:00 · 541 阅读 · 0 评论 -
6.4.1、生成树、生成森林
遍历连通图过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。原创 2024-04-15 18:00:00 · 532 阅读 · 0 评论 -
6.3.2、深度优先搜索(DFS,深搜)
深度优先搜索就是“一条路走到黑”:从源顶点开始,一直走到没有后继节点,才回溯到上一顶点,然后继续“一条路走到黑”。原创 2024-04-15 18:00:00 · 388 阅读 · 0 评论 -
6.3.1、广度优先搜索(BFS,广搜)
广度优先搜索就像水面上的波纹,一层一层向外扩展:原创 2024-04-15 17:00:00 · 262 阅读 · 0 评论 -
6.2.2、图的链式存储
图通常采用链表存储,具体的存储方法有 4 种:邻接矩阵、邻接表、邻接多重表和十字链表。原创 2024-04-15 17:00:00 · 890 阅读 · 0 评论 -
6.2.1、图的顺序存储
图结构表示的数据之间虽然具有多对多的关系,但同样可以采用顺序存储(即使用数组存储)。原创 2024-04-15 12:34:02 · 303 阅读 · 0 评论 -
6.1、图基本介绍
线性数据结构的元素满足唯一的线性关系:每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。原创 2024-04-15 12:33:04 · 713 阅读 · 0 评论 -
5.7、线段树
信息学竞赛中经常会碰到一些跟区间有关的问题,比如:给定一些区间线段求并区间的长度,或并区间的个数等。通常情况下数据范围非常大时,使用朴素方法的时间复杂度过高,导致不能在规定时间内得到问题的解。原创 2024-04-15 12:32:09 · 638 阅读 · 0 评论 -
5.6、堆(heap)
从下往上堆化:元素从底部向上移动(直到最大元素到达堆顶)。删除堆顶元素,使得数组中下标为 1 的位置空出:比较根结点的左子节点和右子节点(下标为 2、3 的数组元素),将较大的元素与根结点(下标为 1 的位置)交换。一直循环比较空出位置的左右子节点,并将较大者与空位置换,直到空位置在堆的最底部。最终数组中出现了“气泡”,导致存储空间的浪费。先将最后一个元素与堆顶交换:从堆顶开始,不停地与左右子节点进行比较,并和较大的子节点交换位置,直到无法交换位置:插入元素。原创 2024-04-15 08:28:20 · 926 阅读 · 0 评论 -
5.5、哈夫曼树(赫夫曼树、最优树)
路径:一棵树中一个结点到另一个结点之间的通路。下图中,从根结点到结点 a 之间的通路就是一条路径。原创 2024-04-15 08:26:53 · 1091 阅读 · 0 评论 -
5.4.2、双向线索二叉树
基于中序遍历创建线索二叉树时,对于其中的每个结点,即使没有线索的帮助也可以通过中序遍历的规律找到直接前趋和直接后继的位置。原创 2024-04-15 08:25:58 · 144 阅读 · 0 评论 -
5.4.1、线索二叉树
二叉树本身是一种非线性结构,采用任何一种遍历二叉树的方法都可以得到树中所有结点的一个线性序列,该序列除第一个结点外的每个结点都有自己的直接前趋;除最后一个结点外的每个结点都有一个直接后继。原创 2024-04-15 08:25:01 · 814 阅读 · 0 评论 -
5.3、树的双亲表示法
前面讲了二叉树的顺序存储和链式存储,本节来学习如何存储具有普通树结构的数据。原创 2024-04-15 08:23:55 · 362 阅读 · 0 评论 -
5.2.3、森林转化为二叉树
某些实际场景中,为了便于操作具有森林结构的数据,往往需要将森林转化为一整棵二叉树。原创 2024-04-15 08:22:31 · 187 阅读 · 0 评论 -
5.2.2、二叉的遍历
先序遍历:先输出根结点,再遍历左子树,最后遍历右子树;遍历左子树和右子树时同样遵循先序遍历的规则(可递归实现先序遍历)。原创 2024-04-14 21:15:00 · 515 阅读 · 0 评论 -
5.2.1、二叉树介绍
二叉树中各个节点的度不能超过 2(即只能是 0、1 或 2)。原创 2024-04-14 20:30:00 · 135 阅读 · 0 评论 -
5.1、树基本概念
树存储结构常用于存储逻辑关系为 "一对多" 的数据。树存储结构中,最常用的是二叉树。原创 2024-04-14 20:30:00 · 943 阅读 · 0 评论 -
4.5、广义表
数组即可以存储不可再分的数据元素(如数字 5、字符 'a'),也可以存储数组(即 n 维数组)。原创 2024-04-14 19:45:00 · 767 阅读 · 0 评论 -
4.4、矩阵加法(十字链表实现)
矩阵加法运算的前提条件:各矩阵的行数和列数必须相等。原创 2024-04-14 18:00:00 · 543 阅读 · 0 评论 -
4.3、矩阵乘法(行逻辑链接的顺序表实现)
矩阵相乘的前提条件:乘号前的矩阵的列数要和乘号后的矩阵的行数相等。原创 2024-04-14 17:15:00 · 166 阅读 · 0 评论 -
4.2、矩阵转置
矩阵转置:互换矩阵中所有元素的行标和列标原创 2024-04-14 16:00:00 · 881 阅读 · 0 评论 -
4.1.3、稀疏矩阵压缩存储(3 种方式)
数据结构提供针对某些特殊矩阵的压缩存储结构。特殊矩阵主要分为:原创 2024-04-14 16:00:00 · 1198 阅读 · 0 评论 -
4.1.2、顺序存储
数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组的实现使用的是顺序存储结构。对数组中存储的数据做插入和删除操作的效率是很差的。原创 2024-04-14 15:00:00 · 134 阅读 · 0 评论 -
4.1.1、基本介绍
本节所讲的数组是一种存储结构,与平时使用的数组基本数据类型要区分开(与我们印象中的某一门编程语言中包含的具体数据类型的数组不同)。原创 2024-04-14 14:00:00 · 100 阅读 · 0 评论 -
3.4、字符过滤系统
字符过滤系统:由用户给定一串字符文本和要查询的字符或字符串,系统自动检测出该字符或字符串在文本中的位置,同时系统中需设有全部替换功能,必要时将文本中的所有查询到的字符替换成指定字符。原创 2024-04-14 13:00:00 · 107 阅读 · 0 评论 -
3.2、BF 算法:普通模式匹配算法
普通模式匹配算法:拿一个串同另一个串中的字符一一比对,得到最终结果。原创 2024-04-14 08:33:37 · 283 阅读 · 0 评论 -
3.1、串存储结构的 3 种实现方法
数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构。原创 2024-04-14 08:31:34 · 729 阅读 · 0 评论 -
2.7、栈和队列总结
数据结构中,判断存储结构之间是否相同或类似,只需对比它们存储的目标数据之间的逻辑关系即可,所存储数据的逻辑关系相同,则说明它们是同一类存储结构。原创 2024-04-14 08:30:24 · 173 阅读 · 0 评论 -
2.6.2、扑克牌游戏
游戏规则:将一副扑克牌平均分成两份,每人拿一份,每个人手中的扑克牌全部反面朝上,叠成一摞。游戏进行时,每个人轮流拿出第一张扑克牌放到桌上,将其排成一竖行。如果打出的牌与桌上某张牌的数字相等(红桃 5 和黑桃 5 相等),即可将两张相同的牌以及两张中间所夹的所有的牌全部取走,每次取走的一小摞牌都必须放到自己本摞的下面。原创 2024-04-14 08:29:25 · 256 阅读 · 0 评论