摘要:KMP函数求解:一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为KMP算法。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函数本身包含了模式串的局部匹配
阅读全文
摘要:栈的一个典型应用就是可以用来协助分析表达式的括号是否匹配。括号可以延伸到任何成对出现的界定符,例如引号,书名号等。 接下来给出程序实现: 第一部分给出的是堆栈的插入,删除等操作对应的实现: 第二部分是给出了相应的括号判断:
阅读全文
摘要:在一些应用当中,会对字符串的字母表进行限制,在这些应用中,往往会用到如下的示例所涉及到的几点知识: 代码实现结果:
阅读全文
摘要:1. 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉算法于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 2. 原图来自:http://blog.sina.com
阅读全文
摘要:1.prim算法:一种计算生成最小生成树的方法,它的每一步都会为一棵生长中的树添加一条边. 2.时间复杂度: 通过邻接矩阵图表示的简易实现中,找到所有最小权边共需O(V)的运行时间。使用简单的二叉堆与邻接表来表示的话,普里姆算法的运行时间则可缩减为 O(ElogV),其中E为连通图的边数,V为顶点数
阅读全文
摘要:定义:一颗二叉排序树(BST)是一棵二叉树,其中的每个节点都包含一个Comparable的键(以及相关联的值),并且每个键都大于其左子树中的任意键而小于右子数的任意结点的键。 复杂度:一个由N个随机键构造的二叉排序树,查找的平均所需比较次数为~2lgN(约1.39lgN)。 接下来是完整的代码,包括
阅读全文
摘要:符号表,有时候被称为字典,类似于那本将单词释义按照字母排列顺序排列起来的历史悠久的参考书! 符号表,最主要的目的是将一个键和一个值进行联系,实现的重点是其使用的数据结构,put()和get()方法 接下来是一个测试用例,FrequendCounter用例会从标准的输入中得到一列字符串,并且记录每个(
阅读全文
摘要:概念: 1.堆排序(Heapsort)是指利用堆积树(堆)这种数据所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)数值或者关键字的记录变得简单 2.堆是完全二叉树,树中的每一个节
阅读全文
摘要:简介 ECharts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器(IE6/7/8/9 /10/11,chrome,firefox,Safari等),底层依赖轻量级的Canvas类库ZRend
阅读全文
摘要:1. 快速排序是一种分治的算法,它是将一个数组分成两个数组,经两个数组进行独立排序。 2.快速排序和归并排序是互补的:归并排序在递归调用发生在处理数组之前,快速排序发生在递归调用排序之后,在归并排序中,一个数组被等分为两半,在快速排序中,切分(partition)位置取决于数组的具体内容。 如图所示
阅读全文
摘要:一、递归,就是在运行的过程中调用自己。 构成递归需具备的条件: 1. 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 下体展现了递归的过程: 接下来通过一个例子来实现递归: 递归实现十进制到二进制的转换: 代码: #include <std
阅读全文