摘要:Algorithms on Strings, Trees and Sequences为字符串匹配的经典书籍,找了很久都只有前12章。下面附上完整版本 550多页的下载地址:Dan Gusfield的字符串处理的经典书籍Algorithms on Strings, Trees and Sequences,完整版,550页。djvu格式的,支持搜索和复制文字,需下载WinDjView阅读器,http://download.csdn.net/detail/dwh0403/5335671如果需要PDF格式,http://download.csdn.net/detail/dwh0403/5335693
阅读全文
摘要:Redis skip list结构分析如何实现一个海量用户的实时排名系统?或许可以用mysql搞一个纠结的方案;但要是选择了redis,那绝对是既简单又优雅。Redis的zset本身就是一种支持排序的集合,而zset的实现,则使用了skip list数据结构。Skip list是一种多层次的有序链表,通过随机地选择层数来实现插入、查找和删除都是O(logn)的时间复杂度(和平衡树同样的效率,但实现比平衡树简单很多)。关于skip list的具体介绍可以参见William Pugh的论文:Skip Lists: A Probabilistic Alternative to Balanced Tr
阅读全文
摘要:为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表,就能轻松实现一个 SkipList。有序表的搜索考虑一个有序表:从该有序表中搜索元素 < 23, 43, 59 &
阅读全文