随笔分类 - JavaScript
摘要:弗洛伊德算法是实现最小生成树的一个很精妙的算法,也是求所有顶点至所有顶点的最短路径问题的不二之选。时间复杂度为O(n3),n为顶点数。 精妙之处在于:一个二重初始化,加一个三重循环权值修正,完成了所有顶点至所有顶点的的最短路径计算,代码及其简洁 JS实现: 运行结果:(结果太长只截取不分) 求最短路
阅读全文
摘要:最短路径: 对于网图来说,最短路径是指两个顶点之间经过的边上权值和最少的路径,我们称第一个顶点是源点,最后一个顶点是终点 迪杰斯特拉 ( Dijkstra) 算法是并不是一下子就求出 了 Vo 到V8 的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最短路径的基础上,求得更
阅读全文
摘要:克鲁斯卡尔算法打印最小生成树: 构造出所有边的集合 edges,从小到大,依次选出筛选边打印,遇到闭环(形成回路)时跳过。 JS代码: 打印结果: 代码部分过程解析: 当i=7时,第82行,调用Find函数,会传入参数edges[7].begin=5。此时第94行,parent[5]=8>0,所以f
阅读全文
摘要:最小生成树: 我们把构造连通网的最小代价生成树称为最小生成树。经典的算法有两种,普利姆算法和克鲁斯卡尔算法。 普里姆算法打印最小生成树: 先选择一个点,把该顶点的边加入数组,再按照权值最小的原则选边,选完最小权值的边,把在所选边的另一顶点的边加入数组,再选权值最小的边,如此循环(有多少顶点循环多少次
阅读全文
摘要:图分为无向图和有向图 图的存储结构有邻接矩阵、邻接表、十字链表、邻接多重表这四种,最常用的是前两种 本篇主要是利用邻接矩阵实现无向图的创建和遍历(深度优先、广度优先),深度优先其实就是二叉树里的前序遍历 利用邻接矩阵(边数组)创建图 深度优先遍历 广度优先遍历 运行: console.log('**
阅读全文
摘要:1、先说二叉树的遍历,遍历方式: 前序遍历:先遍历根结点,然后左子树,再右子树 中序遍历:先遍历左子树,然后根结点,再右子树 后续遍历:先遍历左子树,然后右子树,再根结点 上代码:主要还是利用递归 二叉树的非递归遍历 深度优先遍历(主要利用栈的先进后出) 广度优先遍历(主要利用队列的先进先出) 深度
阅读全文
摘要:JS实现双向链表 双向循环链表:将双向链表的头尾指针相连,就构成了双向循环链表。这种链表从任意一个节点都可以同时向两个方向进行节点遍历。
阅读全文
摘要:链表 链表是一种物理存储单元上非线性、非连续性的数据结构(它在数据逻辑上是线性的),它的每个节点由两个域组成:数据域和指针域。数据域中存储实际数据,指针域则存储着指针信息,指向链表中的下一个元素或者上一个元素。正是由于指针的存在,链表的存储在物理单元是非连续性的。 链表的优点和缺点同样明显。和线性表
阅读全文
摘要:JS实现队列: 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头 链式队列的实现 顺序存储队列:利用js内置Array对象
阅读全文
摘要:栈是一种先进后出的特殊线性表结构,存储上分链式存储和顺序存储两种方式 链式存储: 顺序存储:用js内置对象Array实现
阅读全文
摘要:通常来说逻辑运算a&&b和a||b分别是逻辑与运算和逻辑或运算,返回的是一个布尔值,要么为true,要么为false。 比如在PHP里面a&&b返回类型永远是布尔值,非true即false。 而Javascript中中&& ||是一个陷阱,JS里面的&&和||有点不走寻常路。 总结JS && ||的
阅读全文
摘要:想获取 2018-02-03 13:32:53 这样一个时间格式: 可以把Mysql数据库中读取的时间戳替换掉 new Date()
阅读全文
摘要:常用数组遍历方法: 1、原始for循环 2、数组内置方法Array.prototype.forEach 3、数组内置方法Array.prototype.map map和forEach不同,在forEach中return语句是没有任何效果的,而map则可以改变当前循环的值,并且最终会返回一个新的被改变
阅读全文
摘要:http://pv.sohu.com/cityjson?ie=utf-8 返回结果:var returnCitySN = {"cip": "203.100.83.125", "cid": "CN", "cname": "CHINA"};
阅读全文
摘要:什么是重载? 在C#和JAVA等编程语言中函数重载是指在一个类中可以定义多个方法名相同但是方法参数和顺序不同的方法,以此来实现不同的功能和操作,这就是重载。 JS没有重载,只能模拟重载 一般来说,如果在JS中定义了两个相同名称的函数/方法,那么前一个函数等于定义无效,后一个函数才是有效的定义。即使参
阅读全文
摘要:说到构造器(condtructor)、原型链(prototype),说道Function与Object,总要祭出下面这张图 1、Function是最顶层的构造器,Object是最顶层的对象 2、先有的Object.prototype, Object.prototype构造出Function.prot
阅读全文
摘要:在ios系统中,无法使用 window.open 打开url,经过一番尝试终于找到了解决办法
阅读全文
摘要:使用js在对json字符串转json对象时,如果遇到一些控制(特殊)字符会出现转化失败的情况 处理方法:通常我们可以把这些控制字符替换成空 ASCII中的控制字符:
阅读全文
摘要:js使用占位符替换字符串是一个ES6中的模版字符串语法。 在``中使用 ${} var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and not ${2 * a + b}.`); Fifteen is 15 and not 20.
阅读全文