JavaScript数据结构与算法专栏
文章平均质量分 94
JavaScript数据结构与算法学习笔记
一个爱编程的男孩
你现在的压力是来源于你的不自律,你只是在假装努力,你知道自己该干什么不该干什么,可你就是控制不住你自己。你现在的行为跟不上自己的思想,所以你惶恐惧焦虑,你明知道你自己不去做这件事情的后果是什么,可你就是控制不住自己这副懒惰的躯体。这感觉就好像一个人拿一把刀,离你的眼睛越来越近越来越近越来越近,马上就扎到你的眼睛了,可是你宁愿干着急,却连动都不想动一下,你就眼睁睁的看着自己等死,所以你越来越害怕越来越惶恐,可是谁救得了你呢。所以只有管好自己,靠努力去战胜惶恐焦虑,加油!~
展开
-
数据结构与算法(十一)-图(Graph)
文章目录图结构(Graph)一、图的介绍1. 什么是图?2.图的特点3. 图的常用术语:4. 图的表示4.1 邻接矩阵邻接矩阵存在的问题:4.2 邻接表邻接表的问题:二、图结构的封装2.1 图类的创建2.2 添加顶点和边2.3 实现toString()方法测试代码2.4 图的遍历方式图的遍历思想:遍历图的两种算法:2.5 广度优先搜索(BFS)思路:**实现思路:**代码实现:测试代码过程详解简版BFS2.6深度优先搜索(DFS)思路:实现思路:代码实现:测试代码过程详解简版DFS2.7 完整代码图结构原创 2022-01-17 14:45:03 · 1837 阅读 · 10 评论 -
数据结构与算法(十)-红黑树(RedBlackTree)
文章目录红黑树(RedBlackTree)一、红黑树的介绍二、红黑树的五条规则红黑树的相对平衡三、红黑树的三种变化3.1 变色3.2 左旋转3.3 右旋转四、红黑树的插入操作情况1情况2情况3情况4情况5五、实际插入案例插入10插入9插入8插入7插入6插入5插入4插入3插入2插入1红黑树(RedBlackTree)一、红黑树的介绍红黑树(Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉原创 2022-01-14 15:01:01 · 641 阅读 · 8 评论 -
数据结构与算法(九)-二叉搜索树(BinarySearchTree)
二叉搜索树(BinarySearchTree)一、对二叉搜索树的介绍二叉搜索树(BST,Binary Search Tree),也称为二叉排序树和二叉查找树1. 二叉搜索树的特性非空左子树的所有键值小于其根节点的键值。比如:下图三,中节点 6 的所有非空左子树的键值都小于 6非空右子树的所有键值大于其根节点的键值;比如:下图三,中节点 6 的所有非空右子树的键值都大于 6;左、右子树本身也都是二叉搜索树图二和图三符合二叉搜索树的特效,所以属于二叉树图一中的节点5要比节点7大,不符合原创 2022-01-13 17:45:50 · 16687 阅读 · 7 评论 -
数据结构与算法(八)-树(Tree)和二叉树(BinaryTree)
树(Tree)和二叉树(BinaryTree)一、树结构的介绍我们大家都见过现实生活中的树????,例如:1.1 树的特点:树一般都有一个根,连接着根的是树干树干会发生分叉,形成许多树枝,树枝会继续分化成更小的树枝树枝的最后是叶子现实生活中很多结构都是树的抽象,模拟的树结构相当于旋转180°的树,如下:1.2 树结构 对比于数组/链表/哈希表 有哪些优势呢?数组:优点:可以通过下标值访问,效率高;缺点:查找数据时需要先对数据进行排序,生成有序数组,才能提高查找效率;并且在插入原创 2022-01-12 15:01:24 · 2168 阅读 · 4 评论 -
数据结构与算法(七)-哈希表(HashTable)
哈希表(HashTable)一、介绍哈希表并不好理解,不像数组、链表和树等可通过图形的形式表示其结构和原理。哈希表的结构就是数组,但它神奇之处在于对下标值的一种变换,这种变换我们可以称之为哈希函数,通过哈希函数可以获取HashCode。哈希表通常是基于数组实现的,但是相对于数组,它存在更多优势1. 哈希表的优点哈希表可以提供非常快速的插入-删除-查找操作;无论多少数据,插入和删除值都只需要非常短的时间,即O(1)的时间级。实际上,只需要几个机器指令即可完成;哈希表的速度比树还要快,基本可以瞬原创 2022-01-11 17:05:08 · 4976 阅读 · 2 评论 -
数据结构与算法(六)-字典(Dictionay)
字典(Dictionay)一、介绍字典是用来存储唯一值的一种数据结构,通常以 [键, 值] 对 的形式来存储数据,主要特点是一一对应,也称为映射。在js中字典是使用Map类实现的,每个语言实现的类名不同,比如:Python 中是 dict,Java 中的 HashMap 和 TreeMap,但是实现字典的特点都是一样的二、字典的实现为了区分ES6中的Map,这里使用Dictionay作为类名字典常见的操作set(key,value) 向字典中添加新元素remove(key) 通过使用键原创 2022-01-10 15:33:42 · 2611 阅读 · 2 评论 -
数据结构与算法(五)-集合(set)
集合(set)结构一、介绍集合通常是由一组无序的、不能重复的元素构成。数学中常指的集合中的元素是可以重复的,但是计算机中集合的元素不能重复。集合是特殊的数组。特殊之处在于里面的元素没有顺序,也不能重复。没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份。二、集合的实现集合比较常见的实现方式是哈希表,这里使用 JavaScript 的 Object 进行封装集合常见的操作add(value) 向集合添加一个新的项remove(value) 从集合移除一原创 2022-01-09 15:33:21 · 3519 阅读 · 2 评论 -
数据结构与算法(四)-双向链表(DoublyLinkedList)
双向链表(DoublyLinkedList)结构一、双向链表的介绍既可以从头遍历到尾,也可以从尾遍历到头。链表相连的过程是双向的。实现原理是一个节点既有向前连接的引用,也有一个向后连接的引用单向链表的特性只能从头遍历到尾或者从尾遍历到头(一般从头到尾)链表相连的过程是单向的,实现原理是上一个节点中有指向下一个节点的引用单向链表有一个比较明显的缺点:可以轻松到达下一个节点,但回到前一个节点很难,在实际开发中, 经常会遇到需要回到上一个节点的情况。由于双向链表的节点指向是双向的,所以双向链表可以原创 2022-01-07 16:20:45 · 6656 阅读 · 2 评论 -
数据结构与算法(三)-链表(LinkedList)
链表结构一、介绍链表和数组一样,可以用于存储一系列的元素,但是链表和数组的实现机制完全不同。链表又可以分作单向链表和双向链表。链表的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(有的语言称为指针或连接)组成。类似于火车头,一节车厢载着乘客(数据),通过节点连接另一节车厢。如下图所示链表的火车结构链表的数据结构 head 属性指向链表的第一个节点。 链表中的最后一个节点指向 null。 当链表中一个节点也没有的时候,head 直接指向 null。给火车加上数原创 2022-01-06 14:43:49 · 6097 阅读 · 2 评论 -
数据结构与算法(二)-队列(queue)
队列(queue)结构一、介绍队列是一种特殊的线性表,生活中类似队列结构的场景:排队:比如在电影院,商场,甚至是厕所排队。优先排队的人,优先处理。 (买票、结账、WC)。如图所示:队列的限制先进先出 (FIFO:First In First Out)只允许在表的前端(front)进行删除操作只允许在表的后端(rear)进行插入操作如图所示:二、程序中的队列打印队列:计算机打印多个文件的时候,需要排队打印线程队列:当开启多线程时,当新开启的线程所需的资源不足原创 2022-01-05 17:23:05 · 3875 阅读 · 2 评论 -
数据结构与算法(一)-栈(stack)
栈(stack)结构一、介绍数组是一个线性结构,并且可以在数组的任意位置插入和删除元素。 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制。 栈和队列就是比较常见的受限的线性结构。特点:栈是后进先出(last in first out)的,就是后进入的元素,先出栈。类似于自动餐托盘,最后放上的托盘,往往先拿出去使用栈的最上面的元素被称为栈顶,栈的最内的元素,被称为栈底向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个原创 2022-01-04 16:09:20 · 4912 阅读 · 4 评论 -
数据结构与算法(零)-前言
JavaScript数据结构与算法本系列文章是作者在B站学习完 《数据结构与算法》后,为了进行总结和复习而整理的学习笔记,视频讲解的特别好,给大家安利一波~一、什么是数据结构?数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。—中文维基百科一句话总结:数据结构就是在计算机中,存储和组织数据的方式。例如:图书馆中存放了很多书籍,怎样摆放图书既能放很多书,还方便取?其实我们主要思考两个问题新书怎么插入?怎么快速对找原创 2022-01-04 15:13:11 · 4980 阅读 · 2 评论