JavaScript 中的 DSA2025 年 4 月 18 日 | 阅读 12 分钟 本文我们将了解 JavaScript 中的 DSA。 数据结构与算法 (DSA) 是计算机科学的支柱,对于高效解决难题至关重要。它们与各种编程语言(如 C++、Java、Python 等)相关联。现在,JavaScript 编程语言也已成为数据结构和算法概念的强大语言。 什么是数据结构?数据结构是一种组织、管理和存储数据的方法。数据的组织方式使得访问数据变得简单无碍。 简单来说,我们可以说数据结构是一组数据值及其之间的联系。 JavaScript 中的数组数组用于存储相关数据的集合,但在 JavaScript 中,我们可以在同一个数组中存储不同类型的数据。数组的每个元素都可以通过其索引值(即数组元素所在的位置编号)来访问。索引值从 0 开始,这意味着如果数组中有 5 个元素,则可以使用索引号 3 访问第 4 个元素。 语法在上述语法中,const 是用于声明数组的关键字,array_name 是数组的名称。item1、item2 和 item3 是数组中存在的项目。 JavaScript 中的数组还可以存储其他数组。这些类型的数组被称为多维数组。 多维数组的语法数组可以用于各种目的,例如添加数据、删除数据等。 JavaScript 中数组的示例在下面的演示中,我们将创建一个相同数据类型的数组和不同数据类型的数组。 代码 输出 这是我们可以看到数组的输出。 ![]() JavaScript 中多维数组的示例我们将在下面的演示中创建一个多维数组。 代码 输出 这是我们可以看到多维数组的结果。 ![]() JavaScript 中的链表链表是一种用于存储顺序数据的数据结构。链表中存在的元素彼此链接。链表中的第一个元素称为头节点,链表中的最后一个元素称为尾节点。我们可以在链表中放入或删除元素。 创建 Node 类Node 类包含两个属性 data:它存储节点的实际数据。 next:它存储下一个节点的引用。 语法 创建 LinkedList 类LinkedList 类显示链表本身。它包含以下两个属性 head:它是第一个节点。 tail:它是最后一个节点。 语法 打印 LinkedList 类以下是用于打印链表中每个节点数据的语法。 语法 在链表中添加新元素的演示我们将在位置 4 添加节点 y,并在尾部添加节点 x。 代码 输出 这是输出,我们可以清楚地看到元素节点 y 和节点 x 已添加到链表中。 ![]() 从链表中删除元素的演示在下面的演示中,我们将从链表中删除节点 1,然后删除索引 2 的节点。 代码 输出 这是输出,我们可以清楚地看到节点已从链表中删除。 ![]() JavaScript 中的哈希表哈希表是一种数据结构,允许构建键值对列表。我们可以借助 Object 数据类型和 Map 对象来实现哈希表。 使用 Object 数据类型我们将使用 Object 数据类型来实现哈希表。 代码 输出 我们可以在以下输出中看到哈希表的实现。 ![]() 使用 Map 对象Map 用于存储项目集合,其中每个项目都以键值对的形式存储。我们将使用 Map 对象来实现哈希表。 代码 输出 我们可以在以下输出中看到 Map 对象的实现。 ![]() 树树是一种用于连接节点的数据结构。一个节点可能包含零个或多个子节点。树中最上面或顶部的节点称为根节点,最下面的节点称为叶节点。所有从根节点发出的节点都称为子节点。 树的高度通过计算根节点与最远节点之间的距离来确定。 节点的层级或深度通过计算节点与根节点之间的距离来确定。 以下是树的代码 上面创建的树将如下所示 ![]() 在上面创建的树中,节点 seema 是根节点。节点 krish、meeta 和 hina 是叶节点。 Seema 的高度是 2,hina 的高度是 0。 krish 的层级或深度是 2,rakhi 的层级或深度是 1。 二叉树最多包含两个子节点的树称为二叉树。二叉树有多种类型
用于搜索的二叉树称为二叉搜索树 (BST)。 实现二叉搜索树 (BST) JavaScript 中的栈栈是一种线性数据结构,它利用后进先出 (LIFO) 或先进后出 (FILO) 原则。栈中的插入和删除都在一端进行。根据 FILO 原则,第一个插入栈的元素最后被移除。根据 LIFO 原则,最后一个放入栈的元素最先被取出。 栈中执行着许多操作,例如 push、pop、peek、isFull 和 isEmpty。 代码 输出 我们可以在 JavaScript 中看到栈的实现。 ![]() JavaScript 中的队列队列是一种线性数据结构,它遵循先进先出 (FIFO) 规则,这意味着队列中的第一个元素将是第一个出来的,就像排队买火车票的人会第一个拿到票一样。 栈中执行着各种操作,例如 push、pop、peek、isFull 和 isEmpty。 代码 输出 我们可以在 JavaScript 中看到栈的实现。 ![]() JavaScript 中的 SetSet 用于存储互不相同的项目集合。Set 包含唯一且不重复的项目。 语法 在上述语法中,参数 "it" 是一个可迭代对象,其中包含元素,并且其所有元素都添加到新创建的集合中。如果参数不包含任何元素,则也会创建一个空的新的集合。 Set 对象的实现 代码 输出 我们可以在 JavaScript 中看到 set 的使用。 ![]() JavaScript 中的图图是一种非线性数据结构,包含节点和边。边也称为弧或线。节点也称为顶点。 ![]() 代码 输出 我们可以在 JavaScript 中看到图的利用。 ![]() JavaScript 中的算法JavaScript 中有各种算法,我们将在下面讨论 排序算法有时我们需要在 JavaScript 中对数字进行排序,为此我们有各种排序算法,例如归并排序、快速排序、选择排序、冒泡排序、插入排序和堆排序。 归并排序:它通过分治法对数组进行排序,这意味着它将一个大问题分解为小问题,然后单独解决这些小问题。之后,将小问题的结果合并以解决大问题。 快速排序:它通过分治算法对数组进行排序。它首先在数组中选择一个枢轴项,然后将其与数组中存在的其他项进行比较并对数组进行排序。 冒泡排序:它通过构建一个循环来对数组进行排序,该循环用于将每个项与其他项进行比较。如果比较的项比手中的项短,则我们交换它们的位置。这个过程会一遍又一遍地发生,直到整个数组排序完成。 选择排序:它通过将第一项视为最小项来对数组进行排序,然后将该项与其他项进行比较。如果其他项更小,则将其设置为新的最小项。这个循环将一直进行,直到整个数组排序完成。 插入排序:它通过将第一项视为已排序的项来对数组进行排序,然后选取下一项将其与已排序的项进行比较。如果该项更小,则将其插入到正确的位置。这个过程会一遍又一遍地发生,直到整个数组排序完成。 堆排序:堆是一种基于树的数据结构。堆排序通过利用堆数据结构对数组进行排序。 搜索算法在 JavaScript 中,搜索算法用于获取存储在数据结构中的信息。我们有多种方式可以在数组中搜索数据 线性搜索 它用于在数组中搜索元素。它遍历数组中存在的每个元素,当找到目标元素时,它返回该元素的索引。 二分搜索 它用于在已排序的数组中搜索值。它遵循分治算法,因此它将数组分成两部分并检查目标。 动态规划 这是一种强大的方法,用于解决复杂问题。它将复杂问题分解为简单的子问题。它解决了子问题,然后结合结果来解决复杂问题。 贪心算法此算法用于解决复杂问题。它允许在每个步骤中做出局部最优选择来解决问题。首先,此算法将检查所有选项,然后选择最佳选项,然后重复此过程,直到达到结果。 贪心算法的实现 代码 输出 ![]() JavaScript 中 DSA 的优势
结论在本文中,我们学习了 JavaScript 中的 DSA。我们理解了数组、链表、哈希表、树、二叉树、栈、队列、集合、图、搜索算法和贪心算法等算法,以及 JavaScript 中 DSA 的优势。 |
我们请求您订阅我们的新闻通讯以获取最新更新。