JavaScript数据结构与算法
文章平均质量分 68
vincent_wsc
努力只是为了生活的更好。
展开
-
javascript数据结构与算法笔记(四):循环队列
javascript数据结构与算法笔记(四):循环队列一:简介二:ES6版Queue类一:简介循环队列是指队列头元素的移除会追加到队列的尾部。我们此次拿一个例子来实现循环队列,例子名就是模拟民间游戏击鼓传花即:数人或几十人围成圆圈坐下,其中一人拿花(或一小物件);另有一人背着大家或蒙眼击鼓(桌子、黑板或其他能发出声音的物体),鼓响时众人开始依次传花,至鼓停止为止。此时花在谁手中(或其座位前),...原创 2018-12-12 14:23:33 · 223 阅读 · 0 评论 -
javascript算法之优势洗牌(类似田忌赛马)
javascript算法之优势洗牌(类似田忌赛马)题目示例思路实现输出结果题目给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。返回:返回 A 的任意排列,使其相对于 B 的优势最大化示例const A = [2,8,11,15];const B = [1,11,4,11];思路排序A为从小到大遍历B...原创 2019-07-23 15:26:06 · 560 阅读 · 0 评论 -
javascript之原型链污染
javascript之原型链污染实例避免实例Object.prototype.x = 'outer';(function(){ const a = {}; (function foo(){ console.log(a.x); })();})();注:输出结果为outer。避免Object.prototype.x = 'outer';(function(){ ...原创 2019-07-25 11:34:26 · 781 阅读 · 2 评论 -
javascript之eval与Function实现字符串表达式执行比较
javascript之eval与Function实现字符串表达式执行比较var un = 1;var jsstring = "console.log(un)";eval(jsstring);Function("console.log(typeof un)")();注:eval()和Function构造不同的是eval()可以干扰作用域链,而Function()更安分守己些。不管你在...原创 2019-07-25 10:19:30 · 864 阅读 · 0 评论 -
javascript之使用逆波兰表达式(后缀表达式)实现算数表达式计算
javascript之使用逆波兰表达式(后缀表达式)实现算数表达式计算知识点使用JavaScript实现测试知识点栈逆波兰表达式(后缀表达式)注:具体逆波兰表达式相关介绍可参考使用JavaScript实现1.定义栈class Stack { constructor() { this._items = []; // 储存数据 } // 向栈内压入...原创 2019-07-17 10:00:56 · 738 阅读 · 0 评论 -
JavaScript之手写bind
实现Function.prototype.bind = function (ctx, ... argv1) { // 1、保存函数 var _this = this; ctx.from = 'obj'; // 4、返回一个待执行的函数 return function F(){ // 5、将二次传递的参数转化为数组; if(this...原创 2019-07-23 16:05:38 · 120 阅读 · 0 评论 -
Javascript之数据结构与算法的自平衡二叉搜索树(AVL)实现
Javascript之数据结构与算法的自平衡二叉搜索树(AVL)实现简介代码实现简介AVL树是一种自平衡树。添加或移除节点时, AVL树会尝试自平衡。任意一个节点(不论深度)的左子树和右子树高度最多相差1。添加或移除节点时, AVL树会尽可能尝试转换为完全树。平衡因子是在AVL树中,需要对每个节点计算右子树高度( hr)和左子树高度( hl)的差值,该值( hr- hl)应为0、1或-1。...原创 2019-01-09 17:16:52 · 318 阅读 · 0 评论 -
Javascript之数据结构与算法的二叉树和二叉搜索树实现
Javascript之数据结构与算法的二叉树和二叉搜索树实现简介代码实现简介二叉树中的节点最多只能有两个子节点:一个是左侧子节点,另一个是右侧子节点。二叉搜索树( BST)是二叉树的一种,但是它只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大(或者等于)的值。中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。先序遍历是...原创 2019-01-09 15:34:24 · 285 阅读 · 0 评论 -
Javascript之数据结构与算法的HashMap实现
Javascript之数据结构与算法的HashMap实现1.自实现HashMap1.自实现HashMaplet LinkedList=require("./LinkedList")let loseloseHashCode=Symbol();class HashMap{ constructor(){ this.table=[]; this[loselo...原创 2019-01-09 11:01:02 · 566 阅读 · 1 评论 -
Javascript之数据结构与算法的Dictionary实现
Javascript之数据结构与算法的Dictionary实现1.自实现Dictionary1.自实现Dictionaryclass Dictionary{ constructor(){ this.items={} } has(key){ return key in this.items; } set(key,value)...原创 2019-01-07 17:44:33 · 232 阅读 · 0 评论 -
Javascript之数据结构与算法的Set实现
Javascript之数据结构与算法的Set实现1.ES6中的Set2.自实现Set1.ES6中的Set请参考官网API:http://caibaojian.com/es6/set-map.html2.自实现Setclass Set{ constructor(){ this.items={}; } has(key){ return k...原创 2019-01-07 15:20:58 · 148 阅读 · 0 评论 -
Javascript之数据结构与算法的图(Graph)实现
Javascript之数据结构与算法的图(Graph)实现简介广度优先搜索算法实际应用-最短路径(非权值)深度优先搜索算法实际应用-拓扑排序(有向无环图)Dijkstra 算法Floyd-Warshall 算法最小生成树(MST)-Prim算法全部代码简介广度优先搜索算法会从指定的第一个顶点开始遍历图,先访问其所有的相邻点,就像一次访问图的一层。换句话说,就是先宽后深地访问顶点。如图:相...原创 2019-01-10 12:58:17 · 811 阅读 · 0 评论 -
javascript数据结构与算法笔记(六):双向链表
javascript数据结构与算法笔记(六):双向链表一:简介二:ES6版DoublyLinkedList类一:简介双向链表和普通链表的区别在于,在链表中,一个节点只有链向下一个节点的链接,而在双向链表中,链接是双向的:一个链向下一个元素,另一个链向前一个元素结构如下:二:ES6版DoublyLinkedList类1.DoublyLinkedList类声明以及辅助类Node存储节点信息...原创 2018-12-18 12:11:31 · 201 阅读 · 0 评论 -
javascript数据结构与算法笔记(三):优先队列
javascript数据结构与算法(三):优先队列一:简介二:ES6版PriorityQueue类一:简介优先队列是元素的添加和移除是基于优先级的。一个现实的例子就是机场登机的顺序。头等舱和商务舱乘客的优先级要高于经济舱乘客。在有些国家,老年人和孕妇(或带小孩的妇女)登机时也享有高于其他乘客的优先级。二:ES6版PriorityQueue类1.使用WeakMap类声明PriorityQue...原创 2018-12-12 13:44:47 · 5251 阅读 · 0 评论 -
javascript数据结构与算法笔记(二):普通队列
javascript数据结构与算法(二):普通队列一:简介二:ES6版Queue类一:简介队列是遵循FIFO( First In First Out, 先进先出,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。二:ES6版Queue类1.使用WeakMap类声明Queue类具体原因可以参照:https://blog.csd...原创 2018-12-12 13:25:24 · 140 阅读 · 0 评论 -
javascript数据结构与算法笔记(一):栈
javascript数据结构与算法(一):栈一:简介二:ES6版Stack类(数组)三:ES版Stack类私有属性的封装1.伪私有属性封装2.真私有属性封装四:栈解决实际问题案例一:简介栈是一种遵从后进先出( LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。二:ES6版Stack类(数组)1.声明S...原创 2018-12-12 12:56:38 · 216 阅读 · 0 评论 -
javascript数据结构与算法笔记(五):链表
javascript数据结构与算法笔记(五):链表一:简介二:ES6版LinkedList类一:简介相对于传统的数组,链表的一个好处在于,添加或移除元素的时候不需要移动其他元素。然而,链表需要使用指针,查询元素时需要从起点( 表头)开始迭代列表直到找到所需的元素。总的来说,链表在添加和移除元素的效率上比传统数组好,但是查询就不如传统数组了。即使Array类中有splice函数,可以直接向数组插...原创 2018-12-12 16:10:38 · 203 阅读 · 0 评论