![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
十八流选手益达张
这个作者很懒,什么都没留下…
展开
-
简单了解二叉树diff算法
/** * 得到两棵树的差异 * @param {*} originRoot * @param {*} newRoot */function diff(originRoot, newRoot) { var results = []; //记录所有的差异 if (!originRoot && !newRoot) { return [];//两个结点没东西,无差异 } else if (!originRoot &&原创 2020-08-04 23:57:44 · 611 阅读 · 0 评论 -
数据结构之图结构
图结构中,一个结点可以链接到任意结点,所有结点链接而成的结构,即为图结构图结构中的链接可以是有向的,也可以是无向的(双向链接),本文仅讨论双向链接树结构是一种特殊的图结构图结构没有根,可以有环,但是在一个图结构中,不能存在两个或以上的孤立结点可以使用图中任何一个结点表示整个图结构图结构是一种常见的数据结构,例如网络爬虫抓取的网页就是一种典型的图结构图结构的代码可表示为:function Node(value){ this.value = value; this.neighbor原创 2020-08-04 23:54:04 · 345 阅读 · 0 评论 -
数据结构之树结构
树树是一个类似于链表的二维结构,每个节点可以指向0个或多个其他节点树具有以下特点:单根:如果一个节点A指向了另一个节点B,仅能通过A直接找到B节点,不可能通过其他节点直接找到B节点无环:节点的指向不能形成环树的术语:结点的度:某个节点的度 = 该节点子节点的数量树的度:一棵树中,最大的节点的度为该树的度结点的层:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;树的高度或深度:树中结点的最大层次叶子节点:度为0的结点称为叶结点;分支节点:非叶子节点子节点、父节点:相对概原创 2020-08-04 00:15:51 · 124 阅读 · 0 评论 -
常见的几种查询算法
查询算法顺序查找 Inorder Search即普通的遍历,穷举法,没啥好解释的二分查找 Binary Search如果一个序列是一个排序好的序列,则使用二分查找可以极大的缩短查找时间具体的做法是:查找该序列中间未知的数据相等,找到要找的数据较大,则对后续部分的数据做同样的步骤要找的数据较小,则对前面部分的数据做同样的步骤function binarySearch(target,arr){ let minIndex = 0; let maxIndex = ar原创 2020-08-03 00:00:52 · 458 阅读 · 0 评论 -
前端应该了解数据结构基础知识
线性结构线性结构是数据结构中的一种分类,用于表示一系列的元素形成的有序集合。常见的线性结构包括:数组、链表、栈、队列数组特别注意:这里所说的数组是数据结构中的数组,和JS中的数组不一样数组是一整块连续的内存空间,它由固定数量的元素组成,数组具有以下基本特征:整个数组占用的内存空间是连续的数组中元素的数量是固定的(不可增加也不可减少),创建数组时就必须指定其长度每个元素占用的内存大小是完全一样的根据数组的基本特征,我们可以推导出数组具有以下特点:通过下标寻找对应的元素效率极高,原创 2020-07-28 00:35:08 · 103 阅读 · 0 评论 -
几种基础的数组排序算法
选择排序 Selection Sort一次选择排序,可以将某个区间的最小值排列到该区域的第一位,具体的方式是:找出该区域的最小值将该值与该区域第一个值交换对下一个区域重复上述过程,直到排序完成function selectSort(arr){ for (let index = 0; index < arr.length - 1; index++) { let min = arr[index]; for (let j = index +1 ; j.原创 2020-07-28 00:33:19 · 90 阅读 · 0 评论