在网上学习了一些材料。 这一篇:https://www.zhihu.com/question/30527705 另外Redis作者描述的使用跳表的原因: 上面文章中有一些英文缩写,整理如下: 红黑树与B(+)树工程实现的比较: 从各自特点特征角度,分析各种数据结构的应用场景: 红黑树的介绍可以看这两 ...
分类:
其他好文 时间:
2016-10-22 18:12:43
阅读次数:
891
为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树 出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树, 还要参考网上的代码,相当 ...
分类:
其他好文 时间:
2016-09-19 17:58:15
阅读次数:
162
跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)。跳表的具体定义,跳表是由William Pugh发明的,这位确实是个大牛,搞出一些很不错的东西。简单说来跳表也是 链表的一种,只不过它在链表的基础上增加了跳跃功能,正是这个跳跃的功 ...
分类:
其他好文 时间:
2016-08-08 12:44:56
阅读次数:
290
NBA这赛季结束,勇士可惜啊,谁能想到没拿到冠军,库昊也没成为真正的老大,lbl一战封神,所有口水留言都变成羡慕嫉妒恨,哎,我库啊,还是还是看书吧。
ConcurrentSkipListMap说实话,之前还真没注意过,还是看JUC才看到,利用skiplist跳表结构来实现一种有序的map,之前看到的map都是无序。在学习前还是要好好了解下什么是skiplist跳表,的确很不错,利用空间换时间,复...
分类:
其他好文 时间:
2016-06-23 13:00:25
阅读次数:
266
有序集合
sorted set和set一样也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score。sorted set的实现是skip list(跳表)和hash table的混合体当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,所以给定一个元素获取score的开销是O(1),另一个score到元素的映射被添加到skip...
分类:
其他好文 时间:
2016-05-13 01:50:09
阅读次数:
184
概述
基于跳表实现的ConcurrentNavigableMap。
1)containsKey、get、put、remove等操作的平均时间复杂度为log(n);size非固定时间操作,因异步特性,需要遍历所有节点才能确定size,且可能不是正确的值如果遍历过程中有修改;批量操作:putAll、equals、toArray、containsValue、clear非原子性。
2)增...
分类:
其他好文 时间:
2016-04-22 20:19:28
阅读次数:
211
字符串对象的实现 双端链表 字典的实现 跳表的实现 IO操作实现 RDB模块 AOF模块 ae事件模块
分类:
其他好文 时间:
2015-09-16 12:56:31
阅读次数:
116
SkipList称之为跳表,可实现Log(n)级别的插入、删除。和Map、set等典型的数据结构相比,其问题在于性能与插入数据的随机性有关,这和Q-Sort于Merge-Srot类似。LevelDB做为单机数据库存储系统,正常操作下,整体(随机读写、顺序读写)性能上明显优于同类型的SQLite等数据...
分类:
数据库 时间:
2015-09-12 16:05:50
阅读次数:
277
可表述为:从第一层开始,逐次向上一层,对每层进行掷硬币操作,如果0则不插入,如果为1则插入。对于第一层,元素有1/2概率插入。如果掷硬币结果为0,则对第二层进行掷硬币操作,元素有1/2(不插入第一层的概率)*1/2(插入第二层的概率)概率插入,以此类推,如果跳表已经有n层,而前n次掷硬币的操作结果都...
分类:
其他好文 时间:
2015-09-09 11:25:45
阅读次数:
186
跳表(SkipList)简介:
给你一个有序数组,如果现在需要查找某一个数字,你可能会用二分法。
但是如果给你的是一个有序链表,那就用不上二分法了,你能想到什么方法?
跳表是一种很好的选择,理解和实现出来也相对比较容易。
跳表的查询:
例如给出链表: 30 → 40 → 50 → 60 → 70 → 90
现在要插入一个 80 ,如果是用普通方法从头到尾逐个搜索的...
分类:
其他好文 时间:
2015-08-20 13:08:48
阅读次数:
131