赞
踩
PS:跳跃表是比较常问的一种结构。
Skip Lists: A Probabilistic Alternative to Balanced Trees
实质上就是一种可以进行二分查找的有序链表。而二分查找的基础就是分层索引。
eg: 论文第二页给的图
在头领节点的最高楼沿着跨度向前寻找,如果刚好找到所需元素,则直接返回,否则继续往前寻找,知道遇到比寻找的元素大的元素,然后返回一个跨度,并下一层楼寻找。如果在一楼也找不到说明元素不存在。
每个楼层至少有两个元素,跨度和前向指针。
eg: 插入,删除
跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。
首先,因为 zset 要支持随机的插入和删除,所以它 不宜使用数组来实现,关于排序问题,我们也很容易就想到 红黑树/ 平衡树 这样的树形结构,为什么 Redis 不使用这样一些结构呢?
基于以上的一些考虑,Redis 基于 William Pugh 的论文做出一些改进后采用了 跳跃表 这样的结构。
本质是解决查找问题。
跳跃表的节点里有这些元素:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。