Set数据类型及操作Set集合是通过hash table实现的,所以添加、删除和查找的复杂度都是O(1),hash table会随着添加或者删除自动的调整大小,需要注意的是 hash table大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已...
分类:
其他好文 时间:
2015-08-15 09:01:20
阅读次数:
113
1.Bloom Filter
由一个很长的二进制向量和一系列hash函数组成
优点:可以减少IO操作,省空间
缺点:不支持删除,有误判
如果要支持删除操作: 改成计数布隆过滤器
2.SkipList(跳表)
核心思路: 由多层组成,每层都是一个有序链表,最底层包含所有元素,元素数逐层递减。每个节点包含两个指针,一个->,一个向下。
并行编程情况下可以用...
分类:
编程语言 时间:
2015-08-10 14:53:22
阅读次数:
225
原文:http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html跳表SkipList1.聊一聊跳表作者的其人其事2. 言归正传,跳表简介3. 跳表数据存储模型4. 跳表的代码实现分析5. 论文,代码下载及参考资料. 聊一聊作者的其人其...
分类:
其他好文 时间:
2015-06-28 17:31:32
阅读次数:
138
跳跃表
跳跃列表(也称跳表)是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(logn)平均时间)。
基本上,跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳过部分列表,因此得名。所有操作都以对数随机化的时间进行。
如上图所示,是一个即为简单的跳跃表。传统意义的单链表是一个线性结构,向有序的链表...
分类:
其他好文 时间:
2015-06-09 00:59:18
阅读次数:
405
学了一发LCA的倍增算法+跳表维护。先说说LCA倍增算法,思路是fa[i][j]求的是i结点的2^j倍的祖先,其中2^0就是父结点了。所以可以递推fa[i][j]=fa[fa[i][j-1]][j-1]。当求LCA时,设深度u>v,则先倍增把u提到v的同等深度,若u==v,lca就是u,否则,两点同...
一、简介 跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也是有跳表实现的。代码在这里:http://flyingsnail.blog.51cto.com/53...
分类:
编程语言 时间:
2015-06-02 21:29:28
阅读次数:
190
1、定义描述 跳跃列表(也称跳表)是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(logn)平均时间)。基本上,跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳过部分列表,因此得名。所有操作都以对数随机化的....
分类:
其他好文 时间:
2015-05-15 17:15:52
阅读次数:
146
SkipList介绍
1. SkipList(跳表),在理论上能够在O(log(n))时间内完成查找、插入、删除操作。SkipList是一种红黑树的替代方案,由于SkipList与红黑树相比无论从理论和实现都简单许多,所以得到了很好的推广。SkipList是基于一种统计学原理实现的,有可能出现最坏情况,即查找和更新操作都是O(n)时间复杂度,但从统计学角度分析这种概率极小。使用SkipL...
分类:
其他好文 时间:
2015-04-13 19:01:10
阅读次数:
350
1、理想情况在一个使用有序链表描述的具有n个元素的字典中进行搜索,至多需要n次比较。如果在链中部节点加一个指针,则比较次数可以减少到n/2+1。搜索时,首先将要搜索的元素与中间节点进行比较,如果该元素较小,则仅需搜索链表的左半部分。否则,只需搜索又半部分。以上图为例,如果要搜索的数为26,则将26先...
分类:
其他好文 时间:
2015-04-13 00:11:02
阅读次数:
311