《JavaScript数据结构算法》读书笔记
2018-08-17 16:44:42 31 举报
AI智能生成
笔记:《JavaScript数据结构&算法》
作者其他创作
大纲/内容
数组
删除数组元素: splice 、 pop 或 shift
特点:数据元素的插入&删除会改变其他元素位置
栈
后进先出(LIFO)原则的有序集合
队列
队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)
优先队列
循环队列——击鼓传花
JavaScript 任务队列
MacroTask
setTimeout, setInterval, setImmediate, I/O, UI rendering
MicroTask
process.nextTick, Promise, MutationObserver
链表
链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的。每个
元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成
元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成
特点:添加或者移除元素时,不需要移动其他元素;链表需要使用指针,访问链表元素需要从表头开始迭代列表
现实例子:康加舞队、寻宝游戏
双向链表
循环链表
集合
集合是由一组无序且唯一(即不能重复)的项组成的
集合操作
并集
交集
子集
差集
字典和散列表
字典
字典则是以[键,值]的形式来存储元素。也称作映射
散列表
散列算法
散列集合
处理散列表冲突
创建更好的散列表
Map
弱化版本WeatMap
Set
弱化版本WeatSet
WeakSet 或 WeakMap 类没有 entries 、 keys 和 values 等方法,为了提高性能
树
术语:根节点、子节点、叶节点;深度
二叉树
两个子节点:一个是左侧子节点,另一个是右侧子节点
二叉搜索树(BST)
左侧节点存储(比父节点)小的值,
在右侧节点存储(比父节点)大(或者等于)的值
在右侧节点存储(比父节点)大(或者等于)的值
树的遍历
中序遍历
也就是以从最小到最大的顺序访问所有节点
对树进行排序操作
先序遍历
优先于后代节点顺序访问每个节点
一种应用是打印一个结构化的文档
后序遍历
先访问节点的后代节点,再访问节点本身
一种应用是计算一个目录和它的子目录中所有文件所占空间的大小
搜索树种的值
搜索最大值和最小值
搜索一个指定值
移除一个节点
自平衡树
Adelson-Velskii-Landi 树(AVL 树)
图
术语:一个图G = (V, E)
V:一组顶点
E:一组边,连接V中的顶点
相邻顶点
路径
环、无环的、连通的
有向图和无向图
强连通的
加权的、未加权的
图的表示
邻接矩阵
邻接表
关联矩阵
图的遍历
广度优先搜索
深度优先搜索
最短路径算法
Dijkstra 算法
Floyd-Warshall 算法
最小生成树MST
Prim 算法
Kruskal 算法
排序和搜索算法
排序算法
冒泡排序
选择排序
插入排序
归并排序
快排序
堆排序
技术排序、桶排序、基数排序
搜索算法
顺序搜索
二分搜索
算法模式
递归
JavaScript 调用栈大小的限制
斐波那契数列
动态规划
最少硬币找零问题
分数背包问题
最长公共子序列
矩阵链相乘
贪心算法
最少硬币找零问题
分数背包问题
函数式编程
算法复杂度O
收藏
0 条评论
下一页
为你推荐
查看更多