1.是一种有序数据结构,他通过在每个节点维持多个指向其他节点的指针,从而快速达到访问的目的

2.大部分情况跳跃表可以和平衡树相媲美,并且跳跃表比平衡树实现更简单,所以不少程序使用跳跃表代替平衡树

3.跳跃表支持平均O(logN) 最坏O(N)  O(logN)就是减少遍历次数,比如查找一个元素要256次,使用跳跃表可能只需要8次

跳跃表原理

如以下有序数据结构 让我们找出数字24 需要遍历11次才能找到

redis-原理-数据结构-跳跃表(四)

 

 

如果在有序列表上增加一级索引 

redis-原理-数据结构-跳跃表(四)

 

 

  1. 从节点1的顶部L开始遍历,根据node1L3找到node13的L3取出值判断30>24,表示值在这之间不需要往下遍历 (遍历1次)
  2. 继续从节点的L2开始遍历找到Node7的L2,17<24则继续往下遍历,根据node7找到node13的L2 30>24表示值在2个节点之间不需要往下遍历(遍历2次)
  3. 根据node7的L1找到 node10的L1 23<24继续往下找找到Node13的L1 30>24表示值在这之间不需要往下遍历,(遍历2次)
  4. 从node10开始遍历遍历1次找到24(遍历一次)

 从24节约到只遍历7次就找到了元素

 

redis跳跃表结构

zskipList

redis-原理-数据结构-跳跃表(四)

 

 

 redis-原理-数据结构-跳跃表(四)

 

zskipNode

redis-原理-数据结构-跳跃表(四)

 

一个完整的跳跃表示例图

redis-原理-数据结构-跳跃表(四)

 

 需要上面是跨度,通过跨度,到底部可以根据跨度加遍历次数得到元素rank

跳跃表api和复杂度

redis-原理-数据结构-跳跃表(四)

 

跳跃表应用场景

redis-原理-数据结构-跳跃表(四)

 

 

 

 

 

相关文章:

  • 2021-11-24
  • 2021-06-03
  • 2021-11-26
  • 2021-09-22
  • 2021-07-12
  • 2021-04-25
猜你喜欢
  • 2021-09-07
  • 2021-10-13
  • 2021-12-29
  • 2021-11-29
  • 2021-09-25
  • 2021-06-30
  • 2022-01-11
相关资源
相似解决方案