JavaScript数据结构与算法
文章平均质量分 75
掌握JavaScript的数据结构和解决常见的算法问题
ytllll
新时代农名工
展开
-
Dijkstra 算法(最短路径)
Dijkstra 算法是一种计算从单个源到所有其他源的最短路径的贪心算法,这意味着我们可以用它来计算从图的一个顶点到其余各顶点的最短路径。考虑下面这个图:可以看看如何找到顶点A和其余顶点之间的最短路径。但首先,我们需要声明表示上图的邻接矩阵:var graph = [ [0, 2, 4, 0, 0, 0], [0, 0, 2, 4, 2, 0], [0, 0, 0, 0, 3, 0], [0, 0, 0, 0, 0, 2], [0, 0, 0, 3, 0, 2], [0, 0, 0, 0原创 2021-12-14 17:30:10 · 487 阅读 · 0 评论 -
javascript数据结构-链表
1. 链表数据结构链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不算连续放置的。每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成。下图展示一个链表结构:相对于传统的数组,链表的一个好处在于,添加或移除元素的时候不需要移动其他元素。然而,链表需要使用指针,因此实现链表时需要额外注意。在数组中,我们可以直接访问任何位置的任何元素,而想要访问链表中间的一个元素,则需要从起点(表头)开始迭代链表直到找到所需的元素。可以用火车来说明链表。每节车厢都是链表的元素,车原创 2021-11-10 13:31:34 · 646 阅读 · 0 评论 -
javascript数据结构-队列和双端队列
1. 队列数据结构队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。1.1 创建队列首先需要一个用于存储队列中元素的数据结构。可以使用数组,但是为了写出一个在获取元素时更高效的数据结构,将使用一个对象来存储元素。会发现Queue类和Stack类非常类似,只是添加和移除元素的原则不同。export default class Queue { constructor() { this.count =原创 2021-11-07 15:28:45 · 2682 阅读 · 0 评论 -
javascript数据结构-栈
栈是一种遵从后进先出 ( LIFO ) 原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。1.1 创建一个基于数组的栈这里将创建一个类来表示栈。简单地从创建一个 stack-array.js 文件并声明StackA类开始。我们需要一种数据结构来保存栈里的元素,可以选择数组。数组运行我们在任何位置添加或删除元素。由于栈遵循LIFO原则,需要对元素的插入和删除功能进行限制。接下来为栈声明一些方法。push(element(s)原创 2021-11-06 13:37:05 · 272 阅读 · 0 评论 -
javascript数据结构—数组
1. 创建和初始化数组 let daysOfWeek = new Array() //简单的声明并初始化一个数组 daysOfWeek = new Array(7) // 创建一个指定长度的数组 daysOfWeek = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') // 直接将数组作为参数传递给它的构造器 daysOfWeek = [] // 最原创 2021-06-17 22:18:50 · 160 阅读 · 1 评论