恢复内容开始 参考自 http://blog.jobbole.com/111731/ <!--5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tJZCI6Ijk0NDYtMTUyOTQ2ODE4NDc2MCIsImJsb2NrVHlwZSI6Imxpc3 ...
分类:
其他好文 时间:
2018-06-21 01:37:27
阅读次数:
190
跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 一、跳跃表结构定义1. 跳跃表节点结构定义: 2. 跳跃表结构定义: 示例: 二、跳跃表节点中各种结构的作用1. 层:用于加快访问其他节点的速度,一般来说,层的数量越多,访问其他节点的速度就越快。2 ...
分类:
其他好文 时间:
2018-06-03 19:27:10
阅读次数:
123
ACM 所有算法 栈,队列,链表 哈希表,哈希数组 堆,优先队列双端队列可并堆左偏堆 二叉查找树Treap伸展树 并查集集合计数问题二分图的识别 平衡二叉树 二叉排序树 线段树一维线段树二维线段树 树状数组一维树状数组N维树状数组 字典树 后缀数组,后缀树 块状链表 哈夫曼树 桶,跳跃表 Trie树 ...
分类:
编程语言 时间:
2018-04-30 12:04:04
阅读次数:
253
看一下跳跃表的示意图,途中蓝色的为头节点,头节点指向的是普通索引节点 通过上图可以看到跳跃表的基本结构,下面分析一下普通索引节点和头节点的源码,可以发现头节点和普通索引节点的区别就是头节点有level的概念,而普通索引节点没有 ...
分类:
其他好文 时间:
2018-04-12 22:25:24
阅读次数:
185
redis用的人比较多,其中zset大家都熟悉,主要用于排名场景。zset数据结构,分成两部分,一部分是用于排序,一部分用于缓存键值。先看看结构: 上面,跳跃表用于排序结构,可以按照名次,积分查找对应键, 时间复杂度: log(n)。按照名次,积分范围查找一系列键时, 先查询满足条件的第一个键,然后 ...
分类:
其他好文 时间:
2018-04-12 18:36:29
阅读次数:
487
附William Pugh的论文 "《Skip Lists: A Probabilistic Alternative to Balanced Trees》" 写在前面 以下内容针对的是Skip List的插入和删除,建议你先到其他地方大概了解一下Skip List长什么样子的,然后再过来看看这篇,最 ...
分类:
其他好文 时间:
2018-01-19 23:21:10
阅读次数:
203
https://mp.weixin.qq.com/s/BE_UdHdwTna9dq-qeTPAAQ 系列文章: 《漫画:什么是一致性哈希?》 《漫画:什么是B+树?》 《漫画:什么是B-树?》 《漫画:什么是跳跃表?》 《漫画:什么是动态规划?》 《漫画:当程序猿遇上智力测试题》 《漫画:判断 2 ...
分类:
其他好文 时间:
2017-11-26 11:17:35
阅读次数:
139
SkipList在Leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。首先看看SkipList的定义,为什么叫跳跃表? "Skip lists are data structures that use probabilistic ba ...
分类:
其他好文 时间:
2017-11-25 15:25:12
阅读次数:
208
引子 考虑一个有序表:14->23->34->43->50->59->66->72 从该有序表中搜索元素 < 23, 43, 59 > ,需要比较的次数分别为 < 2, 4, 6 >,总共比较的次数 为 2 + 4 + 6 = 12 次。有没有优化的算法吗? 链表是有序的,但不能使用二分查找。类似二 ...
分类:
其他好文 时间:
2017-10-25 15:17:01
阅读次数:
180