首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构
风的反向
创建于2022-01-09
订阅专栏
数据结构学习
暂无订阅
共11篇文章
创建于2022-01-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
图解:二十五张图助你彻底理解深度优先搜索与广度优先搜索
我们首先来回顾一下图的存储方式:邻接矩阵和邻接表。为了实现更好的性能,我们在实际应用中一般使用邻接表的方式来表示图。 注意:我们的思路:如何遍历一张图?==>深搜与广搜==>能够解决的问题。 深度优先搜索是利用递归方法实现的。我们只需要在访问其中一个顶点时: 注意一个细节:在我…
图解:有向环、拓扑排序与Kosaraju算法
有向图与上一篇文章中的无向图相对,边是有方向的,每条边所连接的两个顶点都是一个有序对,它们的邻接性都是单向的。 我们依然使用邻接表存储有向图,其中v-->w表示为顶点v的邻接链表中包含一个顶点w。注意因为方向性,这里每条边只出现一次! 如果你已经掌握了无向图的数据表示,你会发现…
图解:最小生成树(Kruskal算法与Prim算法)
简而言之,我们的讨论对象是一幅权重各不相同的加权无向图,任务是求最小生成树的每条边。接下来,我们一起思考如何实现这个算法! 因为一共有V个顶点,生成树的边恰好连接所有顶点(不多不少),所以生成树必定有V-1条边。好了,恭喜你!🙃到这里我们已经前进了一小步! 你肯定会说,这不是…
线性表(数组、链表、队列、栈)详细总结
接下来,我将对这四种数据结构做一个详细的总结,其中对链表实现了十几种常见的操作。希望对你有所帮助。 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 由于第二个性质,数组支持 “随机访问”,根据下表随机访问的时间复杂度为O(1);但…
图解:如何理解与实现散列表
散列表(Hash table),也叫做哈希表,是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,它充分利用了数组支持按照下标随机访问元素的特性这加快了查找速度。这个映射函数称做散列函数,存…
一文彻底掌握二叉查找树
现代计算机和网络使我们能够接触和访问海量的信息,所以高效的检索这些信息将是一个巨大的挑战。这包括信息的存储、处理和查找。这一问题促使我们去研究经典查找算法,即如何高效的存储和查找数据? 实现一个符号表,我们将信息(键-值)储存在符号表里,根据相应的键去查找它所对应的值。你可以把…
三十张图助你看清红黑树的前世今生
这就是红黑树的定义,但你看完肯定会一脸懵,我也是一样。我会想:红黑树的来源是什么?为什么要区分红色和黑色节点呢?这些性质是怎么来的,或者有什么作用?不着急,你听我慢慢道来,我希望,你能够通过这篇文章对红黑树有一个清晰的认识,包括它的来历,意义以及各种操作。 首先,还记得咱们上次…
图解:什么是“图”?
作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源。 欧拉把实际的抽象问题简化为平面上的点与线组合,每一座桥视为一条线,桥所连接的地区视为点。这样若从某点出发后最后再回到这点,则这一点的线数必须是偶数,这样的点称为偶顶点。相对的,连有奇数条线的点称为奇顶点。由于柯尼斯…
图解:最短路径之如何理解“松弛”or“放松”?
最短路径问题的目的是找到从一个顶点到达另一个顶点的成本最小的路径。最短路径算法被广泛地应用于解决各种复杂的问题,比如在地图中寻找两个地点之间的最短路径,如何在网络连接中为路由器寻找最短的传输路径等等。为了实现最短路径算法,人们发明了一系列的算法,比如:Dijkstra算法与Be…
十大经典排序算法超详细总结
冒泡排序,顾名思义,就是数据像一个个气泡似的不断地往上冒。大致思路是 : 我们对给定的一个数组,进行n轮冒泡操作,每次操作分别比较相邻两项,如果前一项大于后一项,就将它们交换位置,你可以想象一下这个情景,经过n次比较(如果有必要就进行交换),最终的结果肯定是最大的那一项被移动到…
(查找算法系列文一)二叉树基础
其中,第一、二、四个都是树,第三个不是。树的特点很明显吧! 其中每个元素叫做“节点”;用来连接相邻节点之间的关系,我们称之为“父子关系”。例如在图一中,A节点是B节点的父节点,B节点是A节点的子结点,同时,B节点和Q节点是同一个父节点A的子节点,所以它们之间互相成为兄弟节点。我…