跳跃表(Skip Links)实现(Golang版)
目录 跳跃表(Skip Links)实现(Golang版) 1. 介绍 2. 跳跃表在Redis中的应用 3. 跳跃表实现(Golang版) 3.1 实现介绍 3.2 实现源码 附录 参考文档 跳跃表(Skip Links)实现(Golang版) 1. 介绍 跳跃表(Skip Lists)是一种随机化的数据, 由 William Pugh 在论文 《Skip lists: a probabilistic alternative to balanced trees》 中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。 本文注重跳跃表的实现,关于跳跃表的原理介绍,网上有很多优质的介绍文档,这里就不再介绍跳跃表的实现原理了。 2. 跳跃表在Redis中的应用 Redis的有序集合(sorted set)是基于跳跃表实现的,相比 William Pugh 论文中描述的跳跃表,Redis做了一些修改,其中包括: 允许重复的 score 值:多个不同的 member 的 score 值可以相同。 进行对比操作时,不仅要检查 score 值,还要检查 member :当 score 值可以重复时,单靠 score 值无法判断一个元素的身份,所以需要连 member