数据结构与算法
cenjoy
这个作者很懒,什么都没留下…
展开
-
【排序算法】内排序算法总结
★ 基于“比较”操作的内部排序性能大PK我们首先总结一下《排序结构专题1-4》中的十种方法的性能((N个关键字的待排序列)):排序方法 平均时间 最坏时间 辅助存储空间稳定性 直接插入排序O(N^2) O(N^2) O(1) √ 折半插入排序O(N^2)O(N^2)转载 2012-05-08 15:07:32 · 835 阅读 · 0 评论 -
【查找结构】平衡二叉查找树
在上一个专题中,我们在谈论二叉查找树的效率的时候。不同结构的二叉查找树,查找效率有很大的不同(单支树结构的查找效率退化成了顺序查找)。如何解决这个问题呢?关键在于如何最大限度的减小树的深度。正是基于这个想法,平衡二叉树出现了。平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis)平衡二叉查找树,又称 AVL树。 它除了具备二叉查找转载 2012-05-08 15:21:24 · 604 阅读 · 0 评论 -
【查找结构】多路查找树/B-树/B+树
在前面专题中讲的BST、AVL、RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关。那么降低树高自然对查找效率是有所帮助的。另外还有一个比较实际的问题:就是大量数据存储中,实现查询这样一个实际背景下,平衡二叉树由于树深度过大而造成磁盘IO读写过于频繁,进而导致效率低下。那么如何减少树的深度(当然不能减少查询数据量),一个基本的想法就是:1. 每个节点存储多个元素 (但元素数量不能无限转载 2012-05-08 15:24:19 · 1403 阅读 · 0 评论 -
【字典树】串集合查找
Trie 树,又称字典树,单词查找树。它来源于retrieval(检索)中取中间四个字符构成(读音同try)。用于存储大量的字符串以便支持快速模式匹配。主要应用在信息检索领域。Trie 有三种结构: 标准trie (standard trie)、压缩trie、后缀trie(suffix trie) 。 最后一种将在《字符串处理4:后缀树》中详细讲,这里只将前两种。1. 标准转载 2012-05-08 14:24:08 · 1075 阅读 · 0 评论 -
【后缀树】子串匹配结构
Suffix Trie:又称后缀Trie或后缀树。它与Trie树的最大不同在于,后缀Trie的字符串集合是由指定字符串的后缀子串构成的。比如、完整字符串"minimize"的后缀子串组成的集合S分别如下:s1=minimize s2=inimizes3=nimizes4=imizes5=mizes6=izes7=zes8=e然后把这些子串的公共前缀作转载 2012-05-08 14:20:58 · 1207 阅读 · 0 评论 -
【排序算法】桶排序
从《基于比较的排序结构总结》中我们知道:全依赖“比较”操作的排序算法时间复杂度的一个下界O(N*logN)。但确实存在更快的算法。这些算法并不是不用“比较”操作,也不是想办法将比较操作的次数减少到 logN。而是利用对待排数据的某些限定性假设 ,来避免绝大多数的“比较”操作。桶排序就是这样的原理。桶排序的基本思想假设有一组长度为N的待排关键字序列K[1....n]。首先将这个序列划转载 2012-05-08 15:10:09 · 566 阅读 · 0 评论 -
【查找结构】二叉查找树
当所有的静态查找结构添加和删除一个数据的时候,整个结构都需要重建。这对于常常需要在查找过程中动态改变数据而言,是灾难性的。因此人们就必须去寻找高效的动态查找结构,我们在这讨论一个非常常用的动态查找树——二叉查找树。二叉查找树的特点下面的图就是两棵二叉查找树,我们可以总结一下他的特点:(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值(2) 若它的右子树转载 2012-05-08 15:18:09 · 565 阅读 · 0 评论 -
【查找结构】动态查找树比较
我们这个专题介绍的动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。这四种树都具备下面几个优势:(1) 都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的形态。而这些操作所付出的代价都远远小于重建一棵树。这一优势在《查找结构专题(1):静态查找结构概论 》中转载 2012-05-08 15:32:57 · 812 阅读 · 0 评论 -
【查找结构】红黑树
红黑树的性质与定义红黑树(red-black tree) 是一棵满足下述性质的二叉查找树:1. 每一个结点要么是红色,要么是黑色。2. 根结点是黑色的。 3. 所有叶子结点都是黑色的(实际上都是Null指针,下图用NIL表示)。叶子结点不包含任何关键字信息,所有查询关键字都在非终结点上。4. 每个红色结点的两个子节点必须是黑色的。换句话说:从每个叶子到根的所有路转载 2012-05-08 15:27:27 · 4407 阅读 · 0 评论