📝 数据结构和算法

20661篇技术文档
  数据结构-二叉树

📅  最后修改于: 2020-10-15 00:59:53        🧑  作者: Mango

二叉树二进制树是一种特殊类型的通用树,其中每个节点最多可以有两个孩子。二叉树通常分为三个不相交的子集。节点的根左子树,它也是二叉树。右二叉子树下图显示了一个二叉树。二叉树的类型1.严格的二叉树在严格二叉树中,每个非叶节点都包含非空的左和右子树。换句话说,每个非叶节点的度始终为2。具有n个叶的严格二叉树将具有(2n-1)个节点。下图显示了严格的二叉树。2.完整的二叉树如果所有叶子都位于同一级别d,则...

  数据结构-二叉搜索树

📅  最后修改于: 2020-10-15 01:00:57        🧑  作者: Mango

二进制搜索树二进制搜索树可以定义为一类二进制树,其中节点以特定顺序排列。这也称为有序二叉树。在二叉搜索树中,左子树中所有节点的值小于根的值。同样,右子树中所有节点的值都大于或等于根的值。此规则将递归应用于根的所有左子树和右子树。上图中显示了二进制搜索树。作为对BST施加的约束,我们可以看到根节点30在其左子树中不包含任何大于或等于30的值,并且在其右子树中也不包含任何小于30的值。 -树。使用二叉...

  数据结构-平衡树

📅  最后修改于: 2020-10-15 01:02:07        🧑  作者: Mango

AVL树AVL树由GM Adelson-Velsky和EM Landis于1962年发明。为了纪念其发明者,该树被命名为AVL。可以将AVL树定义为高度平衡的二叉搜索树,其中每个节点都与一个平衡因子相关联,该平衡因子是通过从其左子树的高度中减去其右子树的高度来计算的。如果每个节点的平衡因子在-1到1之间,则认为树是平衡的,否则,树将不平衡,需要平衡。平衡系数(k)=高度(left(k))-高度(r...

  数据结构-B Tree

📅  最后修改于: 2020-10-15 01:03:08        🧑  作者: Mango

B树B树是一种专门的m-way树,可以广泛用于磁盘访问。顺序为m的B树最多可以包含m-1个键和m个子级。使用B树的主要原因之一是它能够通过将树的高度保持相对较小来在单个节点中存储大量键并存储较大的键值。顺序为m的AB树包含M方式树的所有属性。此外,它包含以下属性。B树中的每个节点最多包含m个子节点。B树中除根节点和叶节点以外的每个节点至少包含m / 2个子节点。根节点必须至少有2个节点。所有叶节点...

  数据结构-b+ Tree

📅  最后修改于: 2020-10-15 01:04:07        🧑  作者: Mango

B +树B +树是B树的扩展,它允许有效的插入,删除和搜索操作。在B树中,键和记录都可以存储在内部节点和叶节点中。而在B +树中,记录(数据)只能存储在叶节点上,而内部节点只能存储键值。B +树的叶节点以单链接列表的形式链接在一起,从而使搜索查询更加有效。B +树用于存储无法存储在主存储器中的大量数据。由于总是限制主存储器的大小,因此B +树的内部节点(访问记录的键)存储在主存储器中,而叶节点存储...

  数据结构-图

📅  最后修改于: 2020-10-15 01:05:05        🧑  作者: Mango

图形可以将图形定义为一组顶点和用于连接这些顶点的边。图可以看作是循环树,其中顶点(节点)在它们之间保持任何复杂的关系,而不是具有父子关系。定义可以将图G定义为有序集合G(V,E),其中V(G)代表顶点集合,E(G)代表用于连接这些顶点的边集合。具有5个顶点(A,B,C,D,E)和六个边线((A,B),(B,C),(C,E),(E,D)的图G(V,E), (D,B),(D,A))如下图所示。有向图和...

  数据结构-图表示

📅  最后修改于: 2020-10-15 01:06:04        🧑  作者: Mango

图表示通过图形表示,我们简单地表示要用于将某些图形存储到计算机内存中的技术。有两种方法可以将Graph存储到计算机的内存中。在本教程的这一部分中,我们将详细讨论其中的每一个。1.顺序表示在顺序表示中,我们使用邻接矩阵来存储由顶点和边表示的映射。在邻接矩阵中,行和列由图形顶点表示。具有n个顶点的图的尺寸为nx n。如果在Vi和Vj之间存在边,则无向图G的邻接矩阵表示中的条目Mij将为1。下图显示了无...

  数据结构-图的广度优先搜索算法

📅  最后修改于: 2020-10-15 01:07:04        🧑  作者: Mango

图遍历算法在本教程的这一部分中,我们将讨论可用于遍历图形所有顶点的技术。遍历图意味着检查图的所有节点和顶点。通过两种标准方法,我们可以遍历图形。让我们详细讨论其中的每一个。广度优先搜索深度优先搜索广度优先搜索(BFS)算法广度优先搜索是一种图遍历算法,该算法开始从根节点遍历图并探索所有相邻节点。然后,它选择最近的节点并浏览所有未探索的节点。该算法对每个最近的节点遵循相同的过程,直到找到目标为止。广...

  数据结构-图的深度优先搜索算法

📅  最后修改于: 2020-10-15 01:08:03        🧑  作者: Mango

深度优先搜索(DFS)算法深度优先搜索(DFS)算法从图G的初始节点开始,然后逐渐深入,直到找到目标节点或没有子节点的节点。然后,该算法从死角回溯到尚未完全开发的最新节点。DFS中使用的数据结构是堆栈。该过程类似于BFS算法。在DFS中,导致未访问节点的边缘称为发现边缘,而导致已访问节点的边缘称为块边缘。算法步骤1:G中每个节点的SET STATUS = 1(就绪状态)步骤2:将起始节点A推入堆栈...

  数据结构-生成树

📅  最后修改于: 2020-10-15 01:14:48        🧑  作者: Mango

生成树生成树可以定义为连接的无向图G的子图,该图是通过从图中删除所需数量的边而生成的树。换句话说,生成树是将所有顶点连接在一起的连通和无向图G的非循环子图。图G可以具有多个生成树。最小生成树加权图中可以为每个边分配权重。但是,最小生成树是具有最小总权重的生成树。换句话说,最小生成树是在某个特定图的所有其他生成树中权重最小的树。最短路径算法在本教程的这一部分中,我们将讨论用于计算图中两个节点之间的最...

  数据结构-线性搜索

📅  最后修改于: 2020-10-15 01:16:59        🧑  作者: Mango

正在搜寻搜索是在列表中查找某些特定元素的过程。如果列表中存在该元素,则该过程称为成功,并且该过程返回该元素的位置,否则,搜索称为不成功。有两种流行的搜索方法被广泛使用,以便将某些项目搜索到列表中。但是,算法的选择取决于列表的排列。线性搜寻二元搜寻线性搜寻线性搜索是最简单的搜索算法,通常称为顺序搜索。在这种类型的搜索中,我们只需完全遍历列表,然后将列表中的每个元素与要查找其位置的项目进行匹配即可。如...

  数据结构-二元搜索

📅  最后修改于: 2020-10-15 01:18:06        🧑  作者: Mango

二元搜寻二进制搜索是一种在排序列表上有效工作的搜索技术。因此,为了使用二进制搜索技术将元素搜索到某个列表中,我们必须确保对列表进行排序。二进制搜索遵循分而治之的方法,其中将列表分为两半,并将项目与列表的中间元素进行比较。如果找到匹配项,则返回中间元素的位置,否则,我们将根据通过匹配项产生的结果来搜索这两个部分。二元搜索算法如下。BINARY_SEARCH(A,Lower_bound,upper_b...

  排序算法-冒泡排序

📅  最后修改于: 2020-10-15 01:19:14        🧑  作者: Mango

气泡排序在冒泡排序中,将数组的每个元素与其相邻元素进行比较。该算法以遍历方式处理列表。具有n个元素的列表需要n-1次传递才能进行排序。考虑由n个元素组成的数组A,其元素将通过使用冒泡排序进行排序。该算法的过程如下。在通道1中,将A [0]与A [1]比较,将A [1]与A [2]比较,将A [2]与A [3]比较,依此类推。在通道1结束时,列表的最大元素位于列表的最高索引处。在通道2中,将A [0...

  排序算法-桶排序

📅  最后修改于: 2020-10-15 01:20:13        🧑  作者: Mango

桶分类桶分类也称为垃圾桶分类。它通过将元素分布到也称为存储桶的数组中来工作。使用不同的排序算法分别对存储桶进行排序。桶分类的复杂性AlgorithmComplexitySpaceO(1)Worst CaseO(n2)Best CaseΩ(n+k)Average Caseθ(n+k)算法步骤1开始步骤2设置最初为空的“存储桶”数组。步骤3散点图:遍历原始数组,将每个对象放入其存储桶中。步骤4对每个非...

  排序算法-梳子排序

📅  最后修改于: 2020-10-15 01:21:11        🧑  作者: Mango

梳SO梳状排序是冒泡排序的高级形式。冒泡排序比较所有相邻的值,而梳齿排序则删除列表末尾附近的所有乌龟值或较小的值。影响梳齿排序的因素有:通过使用大于1的间隙来改进气泡排序。差距始于较大的值,然后缩小1.3倍。差距缩小直到值达到1。复杂AlgorithmComplexityWorst Case ComplexityO(n2)Best Case Complexityθ(n log n)Average ...