算法
文章平均质量分 91
妙趣前端
学生
展开
-
DIFF算法之snabbdom
diff算法是发生在虚拟DOM上snabbdomH函数是用来产生虚拟节点的虚拟节点有哪些属性虚拟节点上树简单的p函数使用import { init } from 'snabbdom/init'import { classModule } from 'snabbdom/modules/class'import { propsModule } from 'snabbdom/modules/props'import { styleModule } from 'snabbdom/modul原创 2021-02-05 17:44:04 · 326 阅读 · 0 评论 -
diff算法
diff算法是发生在虚拟DOM上snabbdomH函数是用来产生虚拟节点的虚拟节点有哪些属性虚拟节点上树简单的p函数使用import { init } from 'snabbdom/init'import { classModule } from 'snabbdom/modules/class'import { propsModule } from 'snabbdom/modules/props'import { styleModule } from 'snabbdom/modul原创 2021-02-04 11:10:44 · 2070 阅读 · 1 评论 -
十大经典排序算法(动图演示)
十大经典排序算法(动图演示)十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.3 相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总原创 2021-02-01 18:51:23 · 1538 阅读 · 3 评论 -
柠檬水找零
力扣 柠檬水找零题目描述在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。 你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5美元。注意,一开始你手头没有任何零钱。 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释: 前 3 位顾客那里,我们按顺序收取原创 2021-01-14 16:42:10 · 143 阅读 · 1 评论 -
堆排序
堆排序1 什么是堆堆的定义把这个关系 和完全二叉树对应起来,如下图,如果 下标 从1 开始, 这 任意一个节点 i 2i +1 2i +2对于小标从 i ==1 下标从0开始i ==0 的情况来看下 下面 是 不是堆 ?左面 是 小顶堆 ; 右面是 大顶堆看看下面的图形左边 3 6 7 不满足 大顶堆的定义, 中间 大顶堆 右面 是 大顶堆2 堆的存储的结构图1 为...原创 2020-03-24 19:55:23 · 159 阅读 · 0 评论 -
AVL树(一)之 图文解析 和 C语言的实现
文章目录平衡二叉树(AVL树)一、概要二、AVL树的介绍1、树的高度2. 旋转2.1 LL的旋转2.2 RR的旋转2.3 LR的旋转2.4 RL的旋转三、新建流程四、实现代码1、定义2、 节点的创建3、树的高度4、大小比较5、旋转5.1 LL的旋转5.2 RR的旋转5.3 LR的旋转5.4 RL的旋转6、插入7、删除8、完整代码9、测试数据编译环境后记平衡二叉树(AVL树)一、概要平衡二叉...原创 2020-03-22 23:20:31 · 841 阅读 · 0 评论 -
二叉排序树
文章目录二叉排序树一、定义二、 二叉排序树性质:三、二叉排序树的操作1、建立2、查找3、插入4、删除四、代码实现1、二叉树的建立2、查找3、插入4、删除5、实验数据6、编译环境五、后记二叉排序树一、定义二叉排序树,又叫二叉查找树,如果非空,则具有以下性质:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左...原创 2020-03-21 21:19:58 · 2678 阅读 · 0 评论 -
斐波那契查找(黄金分割查找算法)
文章目录斐波那契一、摘要二、什么是斐波那契查找三、 基本思想四、举例五、如何计算1、斐波那契数组2、利用斐波那契数组确定元素的位置3、举例六、代码实现1、斐波那契数组实现2、斐波那契查找3、实验数据及测试4、编译环境七、后记斐波那契一、摘要如果从文件中读取的数据记录的关键字是有序排列的(递增的或是递减的),则可以用一种比折半查找法更有效率的查找方法来查找文件中的记录,即为斐波那契查找,也称...原创 2020-03-20 20:26:00 · 2788 阅读 · 3 评论 -
插值查找(比例查找法)
文章目录插值查找(比例查找法)摘要插值查找测试代码实验数据插值查找(比例查找法)摘要当我们在使用**折半查找法**的时候,都会有个疑问,为什么一定要用折半,为什么不能折三分之一,四分之一呢?为什么我们不能根据我们查找的数值的不同而制定不同的比例来查找呢?于是,经过算法科学家的努力,插值查找法(按比例查找)诞生了。首先我们先写出折半查找法的核心语句mid = (right + left...原创 2020-03-19 20:54:30 · 715 阅读 · 0 评论 -
折半查找法
文章目录折半查找法摘要概述引申解题步骤算法代码实现折半查找法摘要折半查找法是效率较高的一种查找方法。假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=1,上限为h=5,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限...原创 2020-03-19 20:43:24 · 4885 阅读 · 0 评论 -
拓扑排序和关键路径
文章目录拓扑排序和关键路径摘 要1:引言2:设计步骤:etv和ltv数组的计算方法算法思想2. 实现代码建立(以邻接表为例)邻接表建立栈的建立拓扑排序关键路径的查找完整代码编译环境3.后记拓扑排序和关键路径摘 要介绍求关键路经的算法,对于给出的事件结点网络,要求求出从起点到终点的所有路径,经分析、比较后找出长读最大的路径,从而得出求关键路径的算法,并给出计算机上机实现的源程序。关键词 ...原创 2020-03-19 14:23:45 · 5798 阅读 · 0 评论 -
拓扑排序
拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。拿个...原创 2020-03-18 15:51:57 · 544 阅读 · 0 评论 -
KMP算法及优化
KMP算法及优化今天看到同学在复习数据结构书上的KMP算法,忽然发觉自己又把KMP算法忘掉了,以前就已经忘过一次,看样子还是没有真正的掌握它,这回学聪明点,再次搞明白后记录下来。一般字符串匹配过程KMP算法是字符串匹配算法的一种改进版,一般的字符串匹配算法是:从主串(目标字符串)和模式串(待匹配字符串)的第一个字符开始比较,如果相等则继续匹配下一个字符, 如果不相等则从主串的下一个字符开始匹...原创 2020-03-17 22:09:15 · 598 阅读 · 0 评论 -
并查集(入门)
并查集(入门)一、问题引入题意:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来了,不用再修路了;如果...原创 2020-03-17 08:46:34 · 418 阅读 · 0 评论 -
双向链表
双向链表为什么需要双向链表?单链表的结点都只有一个指向下一个结点,单链表的数据元素无法直接访问其前驱元素,所以逆序访问单链表中元素极其耗时;思想有点类似使用空间复杂度换时间复杂度。双向链表:在单链表的结点中增加一个指向其前驱的pre指针;该链表中第一个结点的前趋结点为NULL,最后一个结点的后继结点为NULL 。(三)双向链表的方法实现头插尾插中间插入判断一个节点是否存...原创 2020-03-16 22:49:36 · 435 阅读 · 0 评论 -
弗洛伊德算法
弗洛伊德算法介绍弗洛伊德算法和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。基本思想通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一个矩阵S,矩阵S中的元素a[i][j]表示顶点i(第i个顶点)到顶点j(第j个顶点)...原创 2020-03-16 09:39:19 · 897 阅读 · 0 评论 -
迪杰斯特拉算法
迪杰斯特拉算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。基本思想通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出...原创 2020-03-15 21:29:00 · 452 阅读 · 0 评论