📝 数据结构和算法教程

4065篇技术文档
  数据结构和算法教程

📅  最后修改于: 2021-01-11 06:36:09        🧑  作者: Mango

数据结构是存储数据的编程方式,因此可以有效地使用数据。几乎每个企业应用程序都以一种或另一种方式使用各种类型的数据结构。本教程将使您对理解企业级应用程序的复杂性以及算法和数据结构的需求所需的数据结构有很好的了解。为什么要学习数据结构和算法?随着应用程序变得越来越复杂和数据越来越丰富,当今应用程序面临三个常见问题。数据搜索-考虑一个商店的一百万(106)件商品的库存。如果应用程序要搜索项目,则每次使搜...

  数据结构和算法-概述

📅  最后修改于: 2021-01-11 06:36:39        🧑  作者: Mango

数据结构是一种组织数据以便有效使用数据的系统方法。以下术语是数据结构的基础术语。接口-每个数据结构都有一个接口。接口表示数据结构支持的一组操作。接口仅提供支持的操作的列表,它们可以接受的参数类型以及返回这些操作的类型。实施-实施提供数据结构的内部表示。实现还提供了在数据结构操作中使用的算法的定义。数据结构的特征正确性-数据结构实现应正确实现其接口。时间复杂度-数据结构的运行时间或操作的执行时间必须...

  数据结构-环境设置

📅  最后修改于: 2021-01-11 06:37:04        🧑  作者: Mango

本地环境设置如果您仍然愿意为C编程语言设置环境,则需要计算机上提供以下两个工具,(a)文本编辑器和(b)C编译器。文本编辑器这将用于键入您的程序。少数编辑器的示例包括Windows记事本,OS Edit命令,Brief,Epsilon,EMACS和vim或vi。文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,记事本将在Windows上使用,vim或vi可以在Windows以及Linu...

  数据结构-算法基础

📅  最后修改于: 2021-01-11 06:37:50        🧑  作者: Mango

算法是一个分步过程,它定义了一组指令,这些指令将以某种顺序执行以获得所需的输出。通常,算法是独立于基础语言而创建的,即,一种算法可以用一种以上的编程语言来实现。从数据结构的角度来看,以下是算法的一些重要类别-搜索-在数据结构中搜索项目的算法。排序–按特定顺序对项目进行排序的算法。插入-将项目插入数据结构的算法。更新-更新数据结构中现有项目的算法。删除-从数据结构中删除现有项目的算法。算法的特征并非...

  数据结构-渐近分析

📅  最后修改于: 2021-01-11 06:38:35        🧑  作者: Mango

算法的渐近分析是指定义其运行时性能的数学边界/框架。使用渐近分析,我们可以很好地得出算法的最佳情况,平均情况和最坏情况。渐进分析是输入边界,即,如果算法没有输入,则得出结论可以在恒定时间内工作。除了“输入”之外,所有其他因素都被认为是恒定的。渐进分析是指以数学计算单位计算任何运算的运行时间。例如,一个操作的运行时间被计算为f(n),对于另一操作,它的运行时间可能被计算为g(n2)。这意味着第一操作...

  数据结构-贪心算法

📅  最后修改于: 2021-01-11 06:39:00        🧑  作者: Mango

设计了一种算法来针对给定问题实现最佳解决方案。在贪婪算法方法中,决策是从给定的解决方案域中做出的。由于贪婪,选择了似乎提供最佳解决方案的最接近的解决方案。贪婪算法试图找到局部最优解,最终可能导致全局最优解。但是,通常,贪心算法不会提供全局优化的解决方案。计数硬币这个问题是通过选择尽可能少的硬币来计数到期望值,并且贪婪方法迫使算法选择最大可能的硬币。如果我们给我们提供了₹1、2、5和10的硬币,并且...

  数据结构-分而治之

📅  最后修改于: 2021-01-11 06:39:20        🧑  作者: Mango

在分而治之的方法中,将手头的问题分成较小的子问题,然后分别解决每个问题。当我们继续将子问题划分为更小的子问题时,我们最终可能会达到无法再进行划分的阶段。那些“原子的”最小可能的子问题(分数)得以解决。最后合并所有子问题的解决方案,以获得原始问题的解决方案。从广义上讲,我们可以通过三步过程来理解分而治之的方法。分割/断裂此步骤涉及将问题分解为较小的子问题。子问题应该代表原始问题的一部分。此步骤通常采...

  数据结构-动态编程

📅  最后修改于: 2021-01-11 06:39:43        🧑  作者: Mango

动态编程方法类似于将问题分解为越来越小的可能的子问题的“分而治之”的方法。但是与分而治之不同,这些子问题并不是独立解决的。相反,这些较小的子问题的结果将被记住并用于相似或重叠的子问题。在有问题的地方使用动态编程,可以将其划分为相似的子问题,以便其结果可以重复使用。通常,这些算法用于优化。在解决现有子问题之前,动态算法将尝试检查先前解决的子问题的结果。子问题的解决方案组合在一起以实现最佳解决方案。所...

  数据结构和算法基本概念

📅  最后修改于: 2021-01-11 06:40:06        🧑  作者: Mango

本章介绍与数据结构有关的基本术语。资料定义数据定义定义具有以下特征的特定数据。原子-定义应定义一个概念。可追溯-定义应能够映射到某些数据元素。准确-定义应明确。简洁明了-定义应该易于理解。数据对象数据对象表示具有数据的对象。数据类型数据类型是一种对各种类型的数据进行分类的方法,例如整数,字符串等,它确定可以与相应数据类型一起使用的值,以及可以对相应数据类型执行的操作的类型。有两种数据类型-内置数据...

  数据结构和算法-数组

📅  最后修改于: 2021-01-11 06:40:56        🧑  作者: Mango

数组是一个容器,可以容纳固定数量的项目,这些项目应为同一类型。大多数数据结构都利用数组来实现其算法。以下是了解数组概念的重要术语。元素-存储在数组中的每个项目称为元素。索引-数组中元素的每个位置都有一个数字索引,用于标识元素。数组表示可以使用不同的语言以各种方式声明数组。为了说明起见,让我们以C数组声明为例。可以使用不同的语言以各种方式声明数组。为了说明起见,让我们以C数组声明为例。根据上面的说明...

  数据结构和算法-链表

📅  最后修改于: 2021-01-11 06:41:43        🧑  作者: Mango

链表是一系列数据结构,它们通过链接连接在一起。链接列表是包含项目的一系列链接。每个链接都包含到另一个链接的连接。链表是仅次于数组的第二大数据结构。以下是了解链接列表概念的重要术语。链接-链接列表的每个链接可以存储称为元素的数据。下一个-链表中的每个链接都包含指向下一个称为下一个链接的链接。LinkedList-链接列表包含到名为“第一”的第一个链接的连接链接。链表表示链接列表可以可视化为节点链,其...

  数据结构-双链表

📅  最后修改于: 2021-01-11 06:42:18        🧑  作者: Mango

双链表是链表的一种变体,与单链表相比,双向导航都可以轻松实现。以下是理解双向链表概念的重要术语。链接-链接列表的每个链接可以存储称为元素的数据。下一个-链表中的每个链接都包含指向下一个称为下一个链接的链接。上一个-链表中的每个链接都包含一个指向上一个链接的链接,称为上一个。LinkedList-链接列表包含到第一个链接(称为First)和最后一个链接(称为Last)的连接链接。双链表表示根据上面的...

  数据结构-循环链表

📅  最后修改于: 2021-01-11 06:42:50        🧑  作者: Mango

循环链表是链表的一种变体,其中第一个元素指向最后一个元素,最后一个元素指向第一个元素。单链表和双链表都可以制成循环链表。单链接列表作为通函在单链列表中,最后一个节点的下一个指针指向第一个节点。双链表作为通函在双向链表中,最后一个节点的下一个指针指向第一个节点,第一个节点的前一个指针指向在两个方向上都形成圆形的最后一个节点。根据上面的说明,以下是要考虑的重点。无论是单链列表还是双链列表,最后一个链接...

  数据结构和算法-Stack

📅  最后修改于: 2021-01-11 06:43:49        🧑  作者: Mango

堆栈是一种抽象数据类型(ADT),通常在大多数编程语言中使用。它被称为堆栈,因为它的行为类似于现实中的堆栈,例如,一副纸牌或一堆盘子等。实际堆栈仅允许在一端进行操作。例如,我们只能从堆栈顶部放置或取出卡或板。同样,堆栈ADT仅允许在一端进行所有数据操作。在任何给定时间,我们只能访问堆栈的顶部元素。此功能使其成为LIFO数据结构。 LIFO代表后进先出。在此,首先访问最后放置(插入或添加)的元素。在...

  数据结构-表达式解析

📅  最后修改于: 2021-01-11 06:44:24        🧑  作者: Mango

编写算术表达式的方法称为符号。算术表达式可以用三种不同但等效的符号表示,即,无需更改表达式的本质或输出。这些符号是-中缀符号前缀(波兰语)表示法后缀(反向波兰语)表示法这些符号被命名为它们如何在表达式中使用运算符。在本章中,我们将学习相同的内容。中缀符号我们用中缀符号表示表达式,例如a-b+ c,其中运算符在-between操作数使用。对于人类来说,以中缀符号进行阅读,书写和说话很容易,...