📝 数据结构和算法

20661篇技术文档
  插入B树

📅  最后修改于: 2020-09-28 02:30:25        🧑  作者: Mango

在本教程中,您将学习如何将密钥插入btree。此外,您还将找到在C,C++,Java和Python中将键插入B树的工作示例。在B树上插入元素包括两个事件:搜索适当的节点以插入元素,并根据需要拆分节点。插入操作始终以自下而上的方式进行。让我们在下面了解这些事件。插入操作如果树为空,请分配一个根节点并插入密钥。更新节点中允许的键数。搜索适当的节点以进行插入。如果节点已满,请执行以下步骤。按递增顺序插入...

  插入排序算法

📅  最后修改于: 2020-09-28 02:31:19        🧑  作者: Mango

在本教程中,您将学习插入排序的工作原理。此外,您还将找到C,C++,Java和Python的插入排序的工作示例。插入排序的工作方式与我们在纸牌游戏中对手牌进行排序的方式类似。我们假设第一张卡片已经被排序,那么我们选择一个未排序的卡片。如果未分类的卡片大于手中的卡片,则将其放置在右侧,否则放置在左侧。同样,其他未分类的卡片也会被拿到正确的位置。插入排序使用类似的方法。插入排序是一种排序算法,它在每次...

  克鲁斯卡尔算法

📅  最后修改于: 2020-09-28 02:32:28        🧑  作者: Mango

在本教程中,您将学习Kruskal的算法如何工作。此外,您还将在C,C++,Java和Python找到Kruskal算法的工作示例。Kruskal算法是一种最小生成树算法,它以图形作为输入并找到该图形的边的子集,形成包括每个顶点的树在可以从该图形成的所有树中具有最小的权重总和Kruskal算法如何工作它属于一类称为贪婪算法的算法,该算法可以找到局部最优值,以期找到全局最优值。我们从权重最低的边缘开...

  线性搜寻

📅  最后修改于: 2020-09-28 02:33:10        🧑  作者: Mango

在本教程中,您将学习线性搜索。此外,您还将找到线性搜索C,C++,Java和Python的工作示例。线性搜索是最简单的搜索算法,可以按顺序搜索列表中的元素。我们从一端开始,检查每个元素,直到找不到所需的元素。线性搜索如何工作?遵循以下步骤在下面的列表中搜索元素k = 1。要搜索的数组从第一个元素开始,将k与每个元素x进行比较。与每个元素比较如果x == k,则返回索引。找到元素否则,找不到返回。线...

  链表操作:遍历,插入和删除

📅  最后修改于: 2020-09-28 02:34:11        🧑  作者: Mango

在本教程中,您将学习链表上的不同操作。此外,您还将发现C / C++, Python和Java中链表操作的实现。现在您已经了解了链表及其类型的基本概念,是时候深入了解可以执行的常见操作了。请记住两个要点:头指向链接列表的第一个节点最后一个节点的next指针为NULL,因此,如果下一个当前节点为NULL,则我们到达链表的末尾。在所有示例中,我们将假定链表具有三个节点1 --->2 --->3,其节点...

  链表的类型-单链,双链和循环链

📅  最后修改于: 2020-09-28 02:34:55        🧑  作者: Mango

在本教程中,您将学习不同类型的链表。此外,您还将在C中找到链接列表的实现。在了解链接列表的类型之前,请确保您了解LinkedList数据结构。链接列表有三种常见类型。单链表双链表通报链表单链表这是最常见的。每个节点都有数据和指向下一个节点的指针。单链表节点表示为:可以将三人单链接列表创建为:双链表我们在双向链表中添加一个指向前一个节点的指针。因此,我们可以朝任一方向前进:前进或后退。双链表节点表示...

  LinkedList数据结构

📅  最后修改于: 2020-09-28 02:35:46        🧑  作者: Mango

在本教程中,您将了解链表数据结构及其在Python,Java,C和C++中的实现。链表数据结构包括一系列连接的节点。在这里,每个节点都存储下一个节点的数据和地址。例如,Linkedin数据结构您必须从某个地方开始,所以我们给第一个节点的地址一个特殊的名称,称为HEAD。同样,可以确定链表中的最后一个节点,因为其下一部分指向NULL。您可能玩过寻宝游戏,其中每个线索都包含有关下一个线索的信息。这就是...

  最长的公共子序列

📅  最后修改于: 2020-09-28 02:36:42        🧑  作者: Mango

在本教程中,您将学习如何找到最长的公共子序列。此外,您还将找到C,C++,Java和Python最长的公共子序列的工作示例。最长共同子序列(LCS)定义为所有给定序列共同的最长子序列,前提是不需要该子序列的元素占据原始序列内的连续位置。如果S1和S2是两个给定序列,则Z是S1和S2的公共子序列,如果Z是S1和S2两者的子序列。此外,Z必须是S1和S2的索引的严格增加的序列。在严格增加的序列中,从原...

  大师定理

📅  最后修改于: 2020-09-28 02:37:26        🧑  作者: Mango

在本教程中,您将学习什么是主定理以及如何将其用于解决递归关系。主方法是用于解决以下形式的递归关系的公式:渐近正函数意味着对于足够大的n,我们有f(n) > 0。主定理用于以简单而快速的方式计算递归关系的时间复杂度(分而治之算法)。大师定理如果a ≥ 1并且b > 1是常数,并且f(n)是渐近正函数,则递归关系的时间复杂度由下式给出:以上每个条件都可以解释为:如果在每个级别上解决子问题的成本增加了某...

  合并排序算法

📅  最后修改于: 2020-09-28 02:38:56        🧑  作者: Mango

在本教程中,您将学习合并排序。此外,您还将找到合并类别C,C++,Java和Python的工作示例。合并排序是计算机编程中的一种“分而治之”算法。它是最流行的排序算法之一,也是建立对构建递归算法的信心的一种好方法。合并排序示例分而治之策略使用分而治之技术,我们将一个问题分解为多个子问题。准备好每个子问题的解决方案后,我们将这些子问题的结果“组合”起来以解决主要问题。假设我们必须对数组A进行排序。一...

  完美的二叉树

📅  最后修改于: 2020-09-28 02:39:59        🧑  作者: Mango

在本教程中,您将学习完美的二叉树。此外,您还将找到用于检查C,C++,Java和Python完美的二叉树的工作示例。理想的二叉树是一种二叉树,其中每个内部节点恰好有两个子节点,而所有叶节点都处于同一级别。完美的二叉树所有内部节点的度数均为2。递归地,可以将完美的二叉树定义为:如果单个节点没有子节点,则它是高度为h = 0的理想二叉树,如果节点的h > 0,则如果其两个子树的高度均为h - 1且不重...

  普里姆算法

📅  最后修改于: 2020-09-28 02:40:57        🧑  作者: Mango

在本教程中,您将学习Prim的算法如何工作。此外,您还将在C,C++,Java和Python找到Prim算法的工作示例。Prim的算法是最小生成树算法,该算法将一个图作为输入并找到该图的边的子集,形成包括每个顶点的树在可以从该图形成的所有树中具有最小的权重总和Prim的算法如何工作它属于一类称为贪婪算法的算法,该算法可以找到局部最优值,以期找到全局最优值。我们从一个顶点开始,不断添加权重最低的边,...

  优先队列

📅  最后修改于: 2020-09-28 02:41:59        🧑  作者: Mango

在本教程中,您将学习什么是优先级队列。此外,您还将了解它在Python,Java,C和C++中的实现。优先级队列是一种特殊的队列,其中每个元素都与一个优先级相关联,并根据其优先级进行服务。如果出现具有相同优先级的元素,则会根据其在队列中的顺序为其提供服务。通常,元素本身的值被认为用于分配优先级。例如,具有最高值的元素被视为最高优先级元素。但是,在其他情况下,我们可以将具有最低值的元素视为最高优先级...

  队列数据结构

📅  最后修改于: 2020-09-28 02:43:03        🧑  作者: Mango

在本教程中,您将学习什么是队列。此外,您还将发现C,C++,Java和Python的队列实现。队列是编程中有用的数据结构。它类似于电影院大厅外面的售票队列,在该队列中,第一个进入队列的人是第一个获得票的人。队列遵循先进先出(FIFO)规则-先进入的项目也是先进入的项目。队列的FIFO表示在上图中,由于1在2之前保留在队列中,因此它也是第一个从队列中删除的队列。它遵循FIFO规则。用编程术语来说,将...

  快速排序算法

📅  最后修改于: 2020-09-28 02:44:35        🧑  作者: Mango

在本教程中,您将学习快速排序的工作原理。另外,您还将找到使用C,C++ Python和Java的quicksort的工作示例。Quicksort是一种基于分而治之方法的算法,其中将数组分为子数组,然后递归调用这些子数组来对元素进行排序。QuickSort如何工作?从数组中选择枢轴元素。您可以从数组中选择任何元素作为枢轴元素。在这里,我们将数组的最右边(即最后一个元素)作为枢轴元素。选择一个枢轴元素...