js数据结构
js数据结构和前端面试算法题
七月是我的生日
人生太苦,但你要甜!
展开
-
JavaScript数据结构与算法 - 排序算法
1.认识大O表示法在算法的藐视中,我们可以通过类似的快捷方式来描述计算机算法的效率。在计算机中,这种粗略的度量被称作“大O”表示法。在数据项个数发生变化是,算法的效率会跟着发生变化。我们通常使用一种算法的速度会如何跟随数据量的变化的。符号名称O(1)常数的O(log(n))对数的O(n)线性的O(n^2)平方的O(2^n)指数的...原创 2020-04-06 19:30:26 · 223 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 图
1.图的邻接矩阵表示法邻接矩阵让每一个节点和一个证书相关联,该整数作为数组的下标值。我们用一个二维数组来标识顶点之间的连接。在二维数组中0表示没有连线,1表示有连线。通过二维数组,我们很快的找到一个顶点和那些顶点有连线(比如A顶点,只需要遍历第一行就可)另外A-A,B-B也就是顶点到自己的连线,通常使用0表示。2.图的邻接表表示邻接表由图中每个顶点以及和顶点相邻的顶点列表组成...原创 2020-04-04 18:05:34 · 290 阅读 · 0 评论 -
据说前端程序猿/媛面试用的JS,一篇博客带你学会JavaScript树结构所有操作(完整版)
1.树结构真实的树:相信每个人对现实生活中的树都会非常熟悉。让我们来看一下树有什么特点?树通常下面有一个根,连接着根的是树干。树干上面会进行分叉成树枝,数值还会分查成更小的树枝。在树枝的最后是叶子。树的抽象:专家们对树的结构进行了抽象,发现树可以模拟生活中很多的场景。2.生活场景公司的组织架构家谱3.树结构的抽象将树结构抽象出来就是我们要学习的树结构。...原创 2020-03-20 21:26:26 · 494 阅读 · 0 评论 -
JavaScript数据结构与算法 --树的遍历和搜索(2)
12.遍历二叉搜索树前面,我们向树中插入了很多的数据,为了能更好的看到测试结果,我们先来学习一下树的遍历。注意:我们这里学习了树的遍历,针对所有的二叉树都是适用的,不仅仅二叉搜索树。树的遍历:建立二叉树遍历一棵树是指访问的树的每个节点(也可以对每个节点进行某些操作,我们这里就是简单的打印)但是树和线性结构不太一样,线性结构我们通常按照从前到后的顺序遍历。应该从树的顶端还是底端...原创 2020-03-09 23:26:09 · 221 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 树
1.树结构真实的树:相信每个人对现实生活中的树都会非常熟悉。让我们来看一下树有什么特点?树通常下面有一个根,连接着根的是树干。树干上面会进行分叉成树枝,数值还会分查成更小的树枝。在树枝的最后是叶子。树的抽象:专家们对树的结构进行了抽象,发现树可以模拟生活中很多的场景。2.生活场景公司的组织架构家谱3.树结构的抽象将树结构抽象出来就是我们要学习的树结构。...原创 2020-03-08 20:25:29 · 405 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 哈希表(二)
1.哈希函数好的哈希函数应该尽可能的让计算的过程变得简单,提高计算的效率哈希表的主要优点就是他的速度提高速度的办法就是尽量少用乘法和除法,因为其性能较低。那么如何设计?哈希表的优势在于效率,所以快速获取到对应的hashCode非常重要我们需要快速的计算来获取到元素的对应的hashCode让元素再哈希表中均匀分布2.使用秦九韶算法实现快速计算。例如cats = 327^3...原创 2020-03-04 19:38:48 · 141 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 哈希表(一)
1.哈希表的概述哈希表是一种重要的数据结构。我们将一点点来实现一个自己的哈希表,通过实现来理解哈希表背后的原理和它的优势。2.数组的优缺点数组进行插入操作的时候,效率比较低。数组进行查找(修改)的效率如果是基于索引进行查找的话效率非常高。如果是基于内容去查找效率就比较低了。数组进行删除操作的效率也不高。3.哈希表的介绍哈希表是基于数组实现的的,但是对比数组而言,...原创 2020-03-03 23:11:35 · 240 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 集合 Set
1.集合结构集合比较常见的实现方式是 哈希表(后续讲解到),我们这里来实现一个封装的集合类。集合通常是由一组无序的,不能重复的元素构成2.特殊的数组特殊之处在于里面的元素没有顺序,也不能重复。没有顺序意外这不能通过下标来进行访问,不能重复意味着相同的对象再集合中只能存在一份。因为ES6里面已经实现了Set类我们为了明确集合的内部实现方式,这里自己封装一下Set类。...原创 2020-02-29 23:34:21 · 189 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 双向链表
1.单项链表简介和缺点只能从头遍历到尾或者从尾遍历到头(一般从头遍历到尾)。也就是链表相连的过程是单向的。实现的原理就是上一个链表有一个指向下一个链表的引用。我们可以很轻松的到下一个节点,但是回到前一个节点是很难的。但是实际开发中经常需要回到上一个节点的情况。假设一个文本编辑器用链表来存储文本,当光标向上移动链表直接操作到下一个节点,但是光标向上移动呢,回不到上一个节点,就需要从he...原创 2020-02-27 21:23:23 · 237 阅读 · 0 评论 -
JavaScript数据结构与算法 -- 链表(单向链表)
1.链表链表和数组一样,可以用于存储一系列的元素,但是链表和数组的实现机制完全不同。要存储多个元素,另外一个选择就是链表。但不同于数组,链表中的元素在内存中不必是连续的空间。链表的每个元素由一个存储元素本身的接概念和一个指向下一个元素的引用(c语言指针)组成。2.数组的局限性数组是我们常用的最常用的存储多个元素的闲心结构。数组的创建通常需要盛情一段连续的内存空间,并且大小是滚顶...原创 2020-02-25 23:42:21 · 228 阅读 · 1 评论 -
JavaScript数据结构与算法 -- 队列/优先级队列
1.队列结构队列(Queue)结构是一种受限的线性表,先进先出(FIFO First In First Out)受限之处在于,它只允许在表的前端(front)进行删除操作在表的后端(rear)进行插入操作2.生活中类似的队列结构电影院,商场排队,游乐场排队买票打印机打印文件3.队列的应用打印队列:有五份文档需要打印,这些文档会按照次序放入到打印队列中打印机会一次从队...原创 2020-02-24 13:23:03 · 858 阅读 · 0 评论 -
JavaScript数据结构于算法 --- 栈
1.栈的简介栈是一种受限的线性表,后进先出LIFO(last in first out)表示就是后进入的元素,第一个弹出栈空间向一个栈插入新元素叫做进栈,入栈,作为栈顶元素从一个栈删除元素称作出栈或者退栈,他就是删除栈顶元素,使其相邻的元素成为新的栈顶元素。2.生活中类似栈的自助餐的托盘,最先放上面的最先被客人拿去。收到的邮件,最后收到的处于邮箱最顶部。3.栈的应用函...原创 2020-02-23 00:06:22 · 311 阅读 · 0 评论 -
Heap(堆排序)最简单,容易理解的方法
Heap (堆排序)1.complete binary tree(完全二叉数列)2.parent > children(父节点>子节点)3.几个完全二叉树的展示:上述几个二叉树都是完全二叉树。完全二叉树的特点:生成节点的顺序是从上往下,从左往右。(思考)上述图怎么添加节点依旧为完全二叉树?4.heap(堆)的概念当一个二叉树完全符合,父节点大于子节点时,则可以称为时...原创 2019-04-28 21:21:17 · 1994 阅读 · 0 评论