数据结构
_宇宙浪子_
与其遥望远方,不如说走就走~
展开
-
红黑树
1. 简介红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对set操作的支持)。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:转载 2014-09-23 15:45:08 · 356 阅读 · 0 评论 -
编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题作者:July、2011.10.16。出处:http://blog.csdn.net/v_JULY_v。引言 最近这几天闲职在家,一忙着投简历,二为准备面试而搜集整理各种面试题。故常常关注个人所建的Algorithms1-14群内朋友关于笔试,面试,宣讲会,offer转载 2014-09-26 09:45:17 · 611 阅读 · 0 评论 -
程序员编程艺术第十一章:最长公共子序列(LCS)问题
程序员编程艺术第十一章:最长公共子序列(LCS)问题0、前言 程序员编程艺术系列重新开始创作了(前十章,请参考程序员编程艺术第一~十章集锦与总结)。回顾之前的前十章,有些代码是值得商榷的,因当时的代码只顾阐述算法的原理或思想,所以,很多的与代码规范相关的问题都未能做到完美。日后,会着力修缮之。 搜遍网上,讲解这个LCS问题的文章不计其数,但大多给读者一种转载 2014-09-26 10:07:48 · 544 阅读 · 0 评论 -
hash_map
本文转自说来惭愧,使用了很久Visual Stdio 2003了,只知道MFC升级到了7.0,ATL也升级到了7.0,对于这两个经典的类库做了一些研究,但一直没有注意C++标准库的变化。 今天尝试的使用了stdext::hash_map这个库,果然不错。下面写下一些心得。 hash_map类在头文件hash_map中,和所有其它的C++标准库一样,头文件转载 2014-09-27 17:34:57 · 415 阅读 · 0 评论 -
STL系列之九 探索hash_set
Title: STL系列之九 探索hash_setAuthor: MoreWindowsBlog: http://blog.csdn.net/MoreWindowsE-mail: morewindows@126.comKeyWord: C++ STL set hash_set 哈希表 链地址法 本文将着重转载 2014-09-27 17:37:56 · 400 阅读 · 0 评论 -
经典算法研究系列:五、红黑树算法的实现与剖析
红黑树算法的层层剖析与逐步实现 ----作者 July 二零一零年十二月三十一日本文主要参考:算法导论第二版本文主要代码:参考算法导论。本文图片来源:个人手工画成、算法导论原书。推荐阅读:Leo J. Guibas 和 Robert Sedgewick 于1978年写的关于红黑树的一篇论文。-------------------------------转载 2014-09-27 18:12:43 · 428 阅读 · 0 评论 -
红黑树从头至尾插入和删除结点的全程演示图
红黑树插入和删除结点的全程演示作者:July、saturnman。时间:二零一一年三月二十八日。出处:http://blog.csdn.net/v_JULY_v。声明:版权所有,侵权必究。-----------------------------------引言: 目前国内图书市场上,抑或网上讲解红黑树的资料层次不齐,混乱不清,没有一个完整而统一的转载 2014-09-27 17:38:35 · 530 阅读 · 0 评论 -
教你透彻了解红黑树
教你透彻了解红黑树 作者:July、saturnman 2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, Fe转载 2014-09-27 17:43:36 · 378 阅读 · 0 评论 -
哈希树(HashTree)
哈希树(HashTree)罗堃 吴朝宏从2000年开始,作者开始研究基于TCP/IP的短信息传输技术。这种技术目前在国际上的标准被成为SMPP(Short Message Peer to PeerProtocol)。SMPP协议是一种支持异步传输模式(Asynchronized TransmissionMode)的信息传输方式。这种异步方式主要体现在两个地方:传递信息和等待确认。在为电转载 2014-09-30 10:09:41 · 4196 阅读 · 0 评论 -
Lucene系列二:反向索引及索引原理
了解关系型数据库的童靴都了解它底层结构采用b+tree的实现,而Lucene则是基于反向索引实现,并将它发挥到了极致。如果不了解Lucene是什么,可以参阅《系列一之全文检索》目录1. 什么是反向索引2. 如何设计反向索引2.1 如何快速查询与苍老师有关的新闻?2.2 有标题列索引和内容列索引会有...转载 2019-08-26 16:41:43 · 997 阅读 · 0 评论 -
深度优先遍历
深度优先遍历(Depth-First Search)类似于对树的先序遍历 遍历规则:首先访问初始点vi ,并将其标记为已访问过,然后从vi 的任一未被访问过的邻接点(有向图的入边邻接点除外,下同)w出发进行深度优先遍历,当vi的所有邻接点均被访问过时,则回退到已被访问的顶点序列中最后一个拥有未被访问的邻接点的顶点vk,从vk的未被访问过的邻接点出发进行深度转载 2014-09-24 14:57:24 · 745 阅读 · 0 评论 -
最近公共祖先LCA:Tarjan算法(介绍2)
对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。目录1百科名片2简介3算法▪ 离线算法 Tarjan▪ 在线算法 倍增法4算法实例1百科名片编辑最近公共祖先(Least Common Ancesto转载 2014-09-24 14:51:29 · 580 阅读 · 0 评论 -
最近公共祖先LCA:Tarjan算法(介绍1)
本文转自:转载 2014-09-24 14:44:50 · 657 阅读 · 0 评论 -
C++ list 成员函数
C++ Lists(链表)Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.STL中 end()指向的总是无效值,取值都用迭代器,用法跟指针差不多。assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素转载 2014-09-23 16:20:12 · 921 阅读 · 0 评论 -
c++ STL map 的基本成员函数
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数;mapmapstring; mapmapint;mapmapstring; mapmapchar;mapmapchar; mapmapint;2. map添加数据;map maplive; 1.map转载 2014-09-23 16:25:49 · 1703 阅读 · 0 评论 -
Trie树:应用于统计和排序
1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。转载 2014-09-23 22:26:46 · 429 阅读 · 0 评论 -
Trie字典树算法
前一段时间写了个微型输入法,使用map进行查找,发现效率不高。正好最近也在针对一个查找功能做优化,针对我的应用场景使用了Trie字典树。特性Trie树属于树形结构,查询效率比红黑树和哈希表都要快。假设有这么一种应用场景:有若干个英文单词,需要快速查找某个单词是否存在于字典中。使用Trie时先从根节点开始查找,直至匹配到给出字符串的最后一个节点。在建立字典树结构时,预先把带有相同前缀的单词合转载 2014-09-23 22:35:37 · 560 阅读 · 0 评论 -
广度优先遍历
广度优先遍历(Breadth-First Search)类似于对树的层序遍历 遍历规则为:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点,其访问次序可以任意,假定依次为vi1,vi2,...,vit,并均标记为已访问过,然后在按照vi1,vi2,...,vit的次序,访问每一个顶点的所有未被访问过的邻接点(次序任意),并均转载 2014-09-24 14:58:46 · 1039 阅读 · 0 评论 -
程序员编程艺术:第二章、字符串是否包含问题
程序员编程艺术:第二章、字符串是否包含问题作者:July,yansha,caopengcs。时间:二零一一年四月二十三日。致谢:老梦,nossiac,Hession,Oliver,luuillu,啊菜,雨翔,及微软100题实现小组所有成员。题目描述:假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出转载 2014-09-26 14:11:15 · 641 阅读 · 0 评论 -
程序员编程艺术第三十九~四十章:最近公共祖先LCA、打印螺旋矩阵
前言 整个编程艺术系列写到了本第三十九和第四十章,系列越写到后,对题材的选取越严格,写作过程也更困难,毕竟不是任何一个编程问题都可以收录到本系列中。 再者,之前已写的38章尚存在诸多问题,为了和大家一起更好的改进整个系列,特把它同步到了github上,见:https://github.com/julycoding/The-Art-Of-Programming-by-Ju转载 2014-09-26 10:07:08 · 745 阅读 · 0 评论 -
程序员编程艺术:第三章、寻找最小的k个数
程序员编程艺术:第三章、寻找最小的k个数作者:July。时间:二零一一年四月二十八日。致谢:litaoye, strugglever,yansha,luuillu,Sorehead,及狂想曲创作组。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。--------------------------转载 2014-09-26 14:12:59 · 681 阅读 · 0 评论 -
动态规划:从新手到专家
前言我们遇到的问题中,有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧,我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的,因为干巴巴的理论实在不好理解。注意:如果你对于其中某一节已经了解并且不想阅读它,没关系,直接跳过它即可。简介(入门)什么是动态规划,我们要如何描述它?动态规划算法通常基于一个递推公转载 2014-09-26 15:52:11 · 451 阅读 · 0 评论 -
搜索引擎-倒排索引基础知识
搜索引擎的索引1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。  ...转载 2019-08-26 17:03:19 · 146 阅读 · 0 评论