随笔分类 - 数据结构与算法

摘要:数据结构与算法0—大纲 数据结构与算法1—线性表 数据结构与算法2—链表 数据结构与算法3—栈 数据结构与算法4—队列 数据结构与算法5—KMP算法 数据结构与算法6—树 数据结构之线索7—二叉树和森林 数据结构与算法8—二叉树的遍历 数据结构与算法9—图 数据结构与算法10—图的遍历 数据结构与算 阅读全文
posted @ 2019-06-22 22:05 亦海 阅读(589) 评论(0) 推荐(1) 编辑
摘要:排序 排序是日常工作和软件设计中常用的运算之一。为了提高查询速度需要将无序序列按照一定的顺序组织成有序序列。 排序的主要目的就是实现快速查找。 排序分类 增排序和减排序:如果排序的结果是按关键字从小到大的次序排列的,就是增排序,否则就是减排序。 稳定排序和不稳定排序:具有相同关键字的记录,经过排序后 阅读全文
posted @ 2019-05-31 17:03 亦海 阅读(436) 评论(0) 推荐(0) 编辑
摘要:引入 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地识别它们是一个很有意义的课题。 例如,对于搜索引擎的爬虫系统来说,收录重复的网页是毫无意义的,只会造成存储和计算资源的浪费; 同时,展示重复的信息对于用户来说也并不是最好的体验。造成网页近重复的可能原因主要包括: 镜像网站 内容复 阅读全文
posted @ 2019-05-27 16:04 亦海 阅读(191) 评论(0) 推荐(0) 编辑
摘要:引入 什么情况下需要布隆过滤器?我们先来看几个比较常见的例子: 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上 在网络爬虫里,一个网址是否被访问过 yahoo, gmail等邮箱垃圾邮件过滤功能 这几个例子有一个共同的特点: 如何判断一个元素是否存在 阅读全文
posted @ 2019-05-27 15:34 亦海 阅读(174) 评论(0) 推荐(0) 编辑
摘要:Trie,又经常叫前缀树,字典树等等。它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree。当然很多名字的意义其实有交叉。 Trie树是一种非常重要的数据结构,它在信息检索,字符串匹配等领域有广泛的应用,同时,它也是很 阅读全文
posted @ 2019-05-27 09:22 亦海 阅读(946) 评论(0) 推荐(1) 编辑
摘要:一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 Hash算法 一致性has 阅读全文
posted @ 2019-05-26 15:26 亦海 阅读(347) 评论(0) 推荐(0) 编辑
摘要:哈希表的概念 哈希表(Hash Table)是一种特殊的数据结构,它最大的特点就是可以快速实现查找、插入和删除。 我们知道,数组的最大特点就是:寻址容易,插入和删除困难;而链表正好相反,寻址困难,而插入和删除操作容易。那么如果能够结合两者的优点,做出一种寻址、插入和删除操作同样快速容易的数据结构,那 阅读全文
posted @ 2019-05-25 17:05 亦海 阅读(1156) 评论(0) 推荐(0) 编辑
摘要:B树 B-树,就是B树,B树的原英文名是B-tree,所以很多翻译为B-树,就会很多人误以为B-树是一种树、B树是另外一种树。其实,B-tree就是B树。 B-树的定义 B树(B-tree)是一种树状数据结构,是一种平衡的多路查找树,能够用来存储排序后的数据。这种数据结构能够让查找数据、循序存取、插 阅读全文
posted @ 2019-05-25 11:02 亦海 阅读(768) 评论(0) 推荐(0) 编辑
摘要:我们知道,对于一般的二叉搜索树(Binary Search Tree),其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度O(log2n)同时也由此而决定。但是,在某些极端的情况下(如在插入的序列是有序的时),二叉搜索树将退化成近似链或链,此时,其操作的时间复杂度将退化成线性的,即O( 阅读全文
posted @ 2019-05-24 20:18 亦海 阅读(510) 评论(2) 推荐(0) 编辑
摘要:目录 1、二叉排序树的定义 2、二叉排序树的查找 3、二叉排序树的插入与删除 4、二叉排序树的构造 5、二叉排序树的删除 定义 二叉排序树(Binary Sort Tree)又称为二叉查找树(Binary Search Tree)、二叉搜索树。 它是特殊的二叉树: 对于二叉树,假设x为二叉树中的任意 阅读全文
posted @ 2019-05-23 11:37 亦海 阅读(611) 评论(0) 推荐(0) 编辑
摘要:最短路径 最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小,例:公交查询系统。 问题解法: 求从某个源点到其余各点的最短路 阅读全文
posted @ 2019-05-23 10:46 亦海 阅读(916) 评论(0) 推荐(0) 编辑
摘要:有向无环图及其应用 一个无环的有向图称做有向无环图,简称DAG图。 DAG图是一类较有向树更一般的特殊有向图。 拓扑排序 通常我们把计划、施工过程、生产流程、程序流程等都当成一个工程,一个大的工程常常被划分成许多较小的子工程,这些子工程称为活动。这些活动完成时,整个工程也就完成了。 例,计算机专业学 阅读全文
posted @ 2019-05-21 16:58 亦海 阅读(977) 评论(1) 推荐(0) 编辑
摘要:最小生成树 问题提出: 要在n个城市间建立通信联络网,城市间的通信线路造价不同,希望找到一种方案使得建立该通信网所需花费的总代价最小。 问题分析: n个城市间,最多可设置n(n-1)/2条线路; n个城市间建立通信网,至少需n-1条线路; 问题转化为:如何在可能的线路中选择n-1条,能把所有城市(顶 阅读全文
posted @ 2019-05-20 20:55 亦海 阅读(353) 评论(0) 推荐(0) 编辑
摘要:查找 基本概念 查找就是在数据集中找出一个“特定元素”。 查找表是由同一类型的数据元素(或记录)构成的集合。 查找表是一种以集合为逻辑结构、以查找为核心的数据结构。 关键字 有时候我们需要指定某数据项的值来查找,这就用到了关键字。 关键字是数据元素中某个数据项的值,用以标识一个数据元素。 若此关键字 阅读全文
posted @ 2019-05-17 17:52 亦海 阅读(461) 评论(0) 推荐(0) 编辑
摘要:图的遍历 1. 在图中有回路,从图中某一顶点出发访问图中其它顶点时,可能又会回到出发点,而图中可能还剩余有顶点没有访问到。 2. 我们可以设置一个全局型标志数组visited来标志某个顶点是否被访问过,未访问的值为0,访问过的值为1。 3. 图的遍历有两种方法:深度优先搜索遍历(DFS)、广度优先搜 阅读全文
posted @ 2019-05-16 12:02 亦海 阅读(818) 评论(0) 推荐(0) 编辑
摘要:图的基本概念 图是由一个顶点集 V 和一个边集 E构成的数据结构。Graph=(V,E) 图中代表一条边的顶点的偶对如果无方向性,即无序,则称此图为无向图。 例: V={V1,V2,V3,V4,V5}; E={(V1,V2),(V1,V4), (V2,V3),(V3,V4), (V2,V5)} 在无 阅读全文
posted @ 2019-05-15 21:10 亦海 阅读(533) 评论(0) 推荐(0) 编辑
摘要:二叉树遍历的几种方法 存储结构: 遍历 树的遍历顺序是相对父结点来说的。 先序遍历: 先访问根结点,然后分别先序遍历左子树、右子树。 递归先序: 非递归先序: 1. p=根结点地址,初始化栈 2. while(p!=NULL || 栈不空) while(p!=NULL ) 访问p, p入栈, p=p 阅读全文
posted @ 2019-05-15 17:19 亦海 阅读(736) 评论(0) 推荐(0) 编辑
摘要:线索二叉树 利用空指针域来真存放结点的前驱和后继信息 ♦ 定义: 前驱与后继:在二叉树的先序、中序或后序遍历序列中两个相邻的结点互称为~ 线索:指向前驱或后继结点的指针称为~ 线索二叉树:加上线索的二叉链表表示的二叉树叫~ 线索化:对二叉树按某种遍历次序使其变为线索二叉树的过程叫~ ♦ 实现: 在有 阅读全文
posted @ 2019-05-14 19:27 亦海 阅读(436) 评论(0) 推荐(0) 编辑
摘要:串的模式匹配算法 子串(模式串)的定位操作通常称为串的模式匹配。 这是串的一种重要操作,很多 软件,若有“编辑”菜单项的话, 则其中必有“查找”子菜单项。 串的顺序存储实现 BF算法设计思想: 将主串的第pos个字符和模式的第1个字符比较, 若相等,继续逐个比较后续字符; 若不等,从主串的下一字符( 阅读全文
posted @ 2019-05-13 22:19 亦海 阅读(455) 评论(0) 推荐(0) 编辑
摘要:树 树的表示方式有 二叉树 二叉树是另一种重要的树形结构,是度为2的有序树,它的特点是每个结点至多有两棵子树。 二叉树的递归定义 二叉树是n(n≥0)个结点的有限集。它或者是空集(n=0),或者同时满足以下两个条件: (1) 有且仅有一个根结点; (2) 其余的结点分成两棵互不相交的左子树和右子树。 阅读全文
posted @ 2019-05-13 22:19 亦海 阅读(290) 评论(0) 推荐(0) 编辑