
js数据结构
文章平均质量分 83
echomsy
这个作者很懒,什么都没留下…
展开
-
JS数据结构(10)—— 二叉搜索树的实现
JS数据结构(10)—— 二叉搜索树1.二叉搜索树(BST,Binary Search Tree)是什么?想要知道什么是二叉搜索树,先得了解什么是树结构,什么是二叉树,可以在我的另外一篇博客 树结构,二叉树 来了解。二叉搜索树,也叫二叉查找树或二叉排序树。二叉搜索树的特性:非空左子树的所有键值小于其根节点的键值。非空右子树的所有键值大于其根节点的键值。左、右子树本身也是二叉搜索树。二叉搜索树的特点就是相对较小的值总是保存在左节点上,相对较大的值总是保存在右节点上。基于这个特原创 2020-07-09 13:48:05 · 350 阅读 · 0 评论 -
JS数据结构(9)—— 树结构,二叉树
JS数据结构(9)—— 树结构1.什么是树结构树结构是一种非线性结构,以分层的方式存储数据。现实中关于树结构的例子有家谱,还有公司的组织架构等。树结构的抽象:树结构的优点:每种数据结构都有自己特定的应用场景,树结合了其他数据结构(数组,链表,哈希表)的优点。在模拟某些场景时,我们使用树结构会更加的方便。因为树结构是非线性的,可以表示一对多的关系,我们可以使用树表示文件的目录结构。2.树结构的术语树(Tree):n(n>=0)个节点构成的有限集合。空树:n = 0 时,就称为一个空原创 2020-07-08 18:12:36 · 391 阅读 · 0 评论 -
JS数据结构(8)—— 哈希表
JS数据结构(8)—— 哈希表1.什么是哈希表?哈希表的复杂之处,就是它不好理解。它的结构就是数组,但是它神奇的地方在于对下标值的一种变换,这种变换我们可以称之为哈希函数,通过哈希函数可以获取到HashCode。哈希表是一种存储键值对的数据结构,是基于数组来实现的,哈希表内部是使用一个哈希函数把值转换成一个数字,而这个数字作为键值对的key,通过这个key来完成查询,插入,修改等操作。2.哈希表的一些概念哈希化:将大数字转化成数组范围内下标的过程。哈希函数:通常我们会将单词转换成大数字以及大数字原创 2020-07-08 11:30:34 · 331 阅读 · 0 评论 -
JS数据结构(7)——集合 集合(添加,删除,清空等)和集合间操作(并集,交集,差集,子集)
JS数据结构(7)——集合1.什么是集合?在ES6中提出了 set 这个数据结构,这也就是我们说的集合。集合是由一组无序的、但不能重复的元素构成的。我们可以把集合看成一个特殊的数组,特殊之处在于里面的元素,没有顺序,也不能重复。没有顺序意味着不能通过下标值来进行访问,不能重复意味着相同的对象在集合中只会存在一份。2.集合类的封装代码思路:在ES6中已经提出了 set 类,但是为了明确集合的内部实现机制,在这里我自己封装一个 Set 类。在集合中,添加一个属性,用于保存之后添加到集合中的元原创 2020-07-07 11:44:10 · 4453 阅读 · 1 评论 -
JS数据结构(6)——双向链表
JS数据结构(6)——双向链表1.什么是双向链表?单向链表要知道什么是双向链表,我们首先得了解单向链表。单向链表的详细解释在这里: JS单向链表单向链表的特点:只能从头遍历到尾链表的连接过程是单向的实现的原理是上一个链表结点中有一个指向下一个结点的next单向链表的结构:单向节点的缺点:可以轻松到达下一个节点,但是回到前一个节点是非常困难的。双向链表双向链表的特点:既可以从头遍历到尾,也可以从尾遍历到头链表连接的过程时双向的实现原理是一个链表结点,既有指向前一个原创 2020-07-07 00:52:36 · 186 阅读 · 0 评论 -
JS数据结构(5)——单向链表
JS数据结构(5)——单向链表链表和数组的区别:数组的优缺点:数组是最常用的数据结构,它用来存储多个元素。几乎每一种编程语言中都有默认实现数组结构,并且有很多关于数组的操作方法。数组的修改和查找操作,时间复杂度低。数组的创建通常需要申请一段连续的内存空间,并且大小是固定的,所以当当前的数组不能满足容量需求的时候,就需要扩容(一般情况下会申请一个更大的数组,比如说原数组的2倍,然后将原数组中的元素再复制过去),这对空间造成了大量浪费。而且在数组开头或者中间插入数据的成本非常高,需要进行大量元素原创 2020-07-06 21:16:54 · 199 阅读 · 0 评论 -
JS数据结构(4)——优先级队列
JS数据结构(4)——优先级队列优先级队列(Priority Queue):普通的队列是插入一个元素,该元素会被放在队尾,必须等到该元素前面的所有元素都处理之后才会处理该元素。但是优先级队列,在插入一个元素的时候要考虑该数据的优先级。优先级队列,在插入一个元素的时候会先和其他数据的优先级进行比较,比较完成后,得到这个元素在队列中的正确的位置,然后入队。优先级队列的其他操作,比如删除,查看队列长度等,和 普通的队列操作相同。优先级队列的实现:实现优先级队列相对于普通队列有两方面需要考虑:原创 2020-06-23 11:37:03 · 1250 阅读 · 0 评论 -
JS数据结构(3)——队列
JS数据结构(3)——队列原创 2020-06-21 00:50:31 · 254 阅读 · 0 评论 -
JS数据结构(2)——栈
JS数据结构(2)——栈栈(stack)是一种** LIFO(Last-In-First-Out,后进先出)** 的数据结构。它是一种受限的线性表,它的限制是仅允许在表的一端进行插入和删除运算,这一端就被称为栈顶,另外一端就是栈底。向一个栈添加一个新元素叫做进栈、入栈或者压栈,它是把新元素放到栈顶元素的上面,成为新的栈顶元素。从一个栈中删除元素叫做出栈或者退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。创建栈function Stack(){ this.items = [];//原创 2020-06-20 15:59:35 · 226 阅读 · 0 评论 -
JS数据结构(1)——数组
JS数据结构(1)——数组数据结构就是 在计算机中,存储和组织数据的方式。在编码中,我们会用到数据结构,其中数组是最简单的数据结构。数组的创建使用Array构造函数var arr1 = new Array(); //创建空数组var arr2 = new Array(1,2,3); //创建元素为1,2,3的数组var arr3 = new Array(5); //创建长度为5的数组使用Array构造函数,需要使用new关键字。使用方括号[]var arr1 = [] ;原创 2020-06-20 13:51:58 · 338 阅读 · 0 评论