![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript数据结构与算法
文章平均质量分 93
JavaScript数据结构详解笔记
万邺
如果有梦,那一定是蓝色
展开
-
JavaScript排序算法总结
JavaScript实现排序算法一、大O表示法大O表示法:在计算机中采用粗略的度量来描述计算机算法的效率,这种方法被称为“大O”表示法 在数据项个数发生改变时,算法的效率也会跟着改变。所以说算法A比算法B快两倍,这样的比较是没有意义的。 因此我们通常使用算法的速度随着数据量的变化会如何变化的方式来表示算法的效率,大O表示法就是方式之一。常见的大O表示形式符号 名称 O(1) 常数 O(log(n)) 对数 O(n) 线性 O(nlog(n))原创 2020-08-15 23:37:54 · 198 阅读 · 0 评论 -
JavaScript实现图结构
JavaScript实现图结构一、图论1.1.图的简介什么是图?图结构是一种与树结构有些相似的数据结构; 图论是数学的一个分支,并且,在数学中,树是图的一种; 图论以图为研究对象,研究顶点和边组成的图形的数学理论和方法; 主要的研究目的为:事物之间的联系,顶点代表事物,边代表两个事物间的关系;图的特点:一组顶点:通常用V(Vertex)表示顶点的集合; 一组边:通常用E(Edge)表示边的集合; 边是顶点和顶点之间的连线; 边可以是有向的,也可以是无向的。比如A-...原创 2020-08-15 20:16:08 · 784 阅读 · 0 评论 -
JavaScript实现树结构(二)
JavaScript实现树结构(二)一、二叉搜索树的封装二叉树搜索树的基本属性:如图所示:二叉搜索树有四个最基本的属性:指向节点的根(root),节点中的键(key)、左指针(right)、右指针(right)。所以,二叉搜索树中除了定义root属性外,还应定义一个节点内部类,里面包含每个节点中的left、right和key三个属性: //封装二叉搜索树 function BinarySearchTree(){ //节点内部类 functio原创 2020-08-15 00:53:48 · 218 阅读 · 3 评论 -
JavaScript实现树结构(一)
JavaScript实现树结构(一)一、树结构简介1.1.简单了解树结构什么是树?真实的树:树的特点:树一般都有一个根,连接着根的是树干; 树干会发生分叉,形成许多树枝,树枝会继续分化成更小的树枝; 树枝的最后是叶子;现实生活中很多结构都是树的抽象,模拟的树结构相当于旋转180°的树。树结构对比于数组/链表/哈希表有哪些优势呢:数组:优点:可以通过下标值访问,效率高; 缺点:查找数据时需要先对数据进行排序,生成有序数组,才能提高查找效率;...原创 2020-08-14 22:17:36 · 588 阅读 · 3 评论 -
JavaScript实现双向链表
JavaScript实现双向链表一、双向链表简介双向链表:既可以从头遍历到尾,又可以从尾遍历到头。也就是说链表连接的过程是双向的,它的实现原理是:一个节点既有向前连接的引用,也有一个向后连接的引用。双向链表的缺点:每次在插入或删除某个节点时,都需要处理四个引用,而不是两个,实现起来会困难些; 相对于单向链表,所占内存空间更大一些; 但是,相对于双向链表的便利性而言,这些缺点微不足道。双向链表的结构:双向链表不仅有head指针指向第一个节点,而且有tail指针指向最后一个节点;原创 2020-08-14 14:22:29 · 522 阅读 · 1 评论 -
JavaScript实现单向链表
JavaScript实现单向链表一、单向链表简介链表和数组一样,可以用于存储一系列的元素,但是链表和数组的实现机制完全不同。链表的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(有的语言称为指针或连接)组成。类似于火车头,一节车厢载着乘客(数据),通过节点连接另一节车厢。head属性指向链表的第一个节点; 链表中的最后一个节点指向null; 当链表中一个节点也没有的时候,head直接指向null;数组存在的缺点:数组的创建通常需要申请..原创 2020-08-13 17:41:29 · 326 阅读 · 2 评论 -
JavaScript实现集合与字典
JavaScript实现集合与字典一、集合结构1.1.简介集合比较常见的实现方式是哈希表,这里使用JavaScript的Object类进行封装。集合通常是由一组无序的、不能重复的元素构成。数学中常指的集合中的元素是可以重复的,但是计算机中集合的元素不能重复。集合是特殊的数组:特殊之处在于里面的元素没有顺序,也不能重复。 没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份。实现集合类: 在ES6中的Set类就是一个集合类,这里我们重新封装一个原创 2020-08-11 23:06:18 · 556 阅读 · 2 评论 -
JavaScript实现队列结构(Queue)
JavaScript实现队列结构(Queue)一、队列简介队列是是一种受限的线性表,特点为先进先出(FIFO:first in first out)。受限之处在于它只允许在表的前端(front)进行删除操作; 在表的后端(rear)进行插入操作;相当于排队买票,先来的先买票,后来的后买票。队列的应用:打印队列:计算机打印多个文件的时候,需要排队打印; 线程队列:当开启多线程时,当新开启的线程所需的资源不足时就先放入线程队列,等待CPU处理;队列类的实现:队列的实现和.原创 2020-08-11 22:03:36 · 6845 阅读 · 1 评论 -
JavaScript实现栈结构(Stack)
JavaScript实现栈结构(Stack)一、前言1.1.什么是数据结构?数据结构就是在计算机中,存储和组织数据的方式。例如:图书管理,怎样摆放图书才能既能放很多书,也方便取?主要需要考虑两个问题:操作一:新书怎么插入? 操作二:怎么找到某本指定的书?常见的数据结构:数组(Aarray) 栈(Stack) 链表(Linked List) 图(Graph) 散列表(Hash) 队列(Queue) 树(Tree) 堆(Heap)注意:数据结构与算法与语言无关,常原创 2020-08-11 21:44:46 · 1213 阅读 · 0 评论