![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
小扣柴扉久
heiheihei
展开
-
散列表(哈希表) `HashTable`
散列表(哈希表) HashTable散列表是字典的一种实现, ES6 对字典的实现是 Map ,js中没有字典这种数据结构, 其实普通的 js 对象也可以看成是一个字典。散列表的特点存储和读取特别快, 时间复杂度约为 O(1)。一般数组、链表等顺序表查找一个元素需要遍历全部元素, 而散列表可以通过散列函数实现快速查找和快速插入。散列函数有个缺点, 容易发生值的碰撞。而且理论上没有完美的散列函数, 样本足够大,总会发生碰撞。解决散列函数碰撞的常见方法有分离链接、线性探查和双散列法等。详见下。1. 实原创 2021-07-27 14:37:43 · 124 阅读 · 0 评论 -
JavaScript数据结构与算法:集合与集合的扩展
集合 Set1. Set 特点集合内部元素唯一, 不允许重复, 支持增删改查的操作。由于 JavaScript 实现了 ES6 中的 Set 类, 而且 Set 类也比较完善了。所以只需要扩展一下高级功能(并集、差集、交集、补集、子集)就可以愉快地使用了。2. 注意事项集合的每个元素并不仅仅是一个值, 而是一个键值对, 当运行以下代码时 const s = new Set([1,2,3]), 并不是单单向集合内插入 1,2,3 这 3 个值, 而是以 [1,1], [2,2], [3,3] 这原创 2021-07-21 15:59:38 · 113 阅读 · 0 评论 -
数据结构与算法JavaScript实现:链表,双向链表,循环链表,约瑟夫环
链表 (LinkList)1. 链表的特点2. 实现链表条件设定:链表的节点都应通过 Node 类实例化得到链表实例化时,自动生成头部节点, new Node('head'), 其 next 属性默认为 null头部节点不计入链表的总长度链表最后一个节点的 next 属性永远指向 null代码 // 节点类// 每个节点包含节点的值和节点下一个节点的引用(`next`属性)// 刚初始化的节点默认指向 nullclass Node { constructor(v原创 2021-07-19 18:03:52 · 132 阅读 · 2 评论 -
数据结构与算法JavaScript描述: 队列,优先队列,循环队列,双端队列
队列队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。可以联想一下小朋友排队打疫苗, 排在前头的先打, 排在后边的后打。打完疫苗的朋友就可以回家了(出队),刚到的朋友需要排队(入队)。1. 实现队列class Queue { constructor(store = []) { this.store = store } // 入队 enqueue(...args) { this.store.push(...args) } // 出队原创 2021-07-15 15:19:45 · 143 阅读 · 0 评论 -
数据结构与算法JavaScript描述:栈与栈的应用(匹配括号)
0. 栈是什么栈是一种后进先出(LIFO, last in first out)的数据结构, 可以联想子弹夹、一摞盘子、浏览器历史记录等, 实际上, 在 JS 中, 数组本身也可以当做栈, 或者是队列使用, 栈和队列的绝大多数接口可以直接调用数组的接口实现。1. 栈的实现/** * @description 栈 * 栈是一种后进先出(LIFO, last in first out)的数据结构, 可以联想子弹夹、一摞盘子 * 本例是基于数组实现的栈, * 实际上, 在 JS 中, 数组本身也原创 2021-07-14 14:18:19 · 146 阅读 · 0 评论