目录
一、简介
跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他的几点指针,从而达到快速访问队尾目的。跳跃表的效率可以和平衡树相媲美了,最关键是它的实现相对于平衡树来说,代码的实现上简单很多。
跳跃表在 Redis 中使用不是特别广泛,只用在了两个地方。一是实现有序集合键(Zset),二是集群节点中用作内部数据结构
有序集合在生活中比较常见,例如根据成绩对学生排名,根据得分对玩家排名等。对于有序集合的底层实现,可以用数组、平衡树、链表等。数组不便元素的插入删除;
平衡树或红黑树虽然效率高但结构复杂;
链表查询需要遍历所有效率低。
Redis采用的是跳跃表。跳跃表效率堪比红黑树,实现远比红黑树简单。
跳跃表效率体现:
普通有序列表:
跳跃表:
解释
假设同时寻找51节点,普通有序链表需要遍历6次才能知道51。
而跳跃表则是从最上层开始寻找,1节点比51节点小,向后比较。
21节点比51节点小,继续向后比较,后面就是NULL了,所以从21节点向下到第1层
在第1层,41节点比51节点小,继续向后,61节点比51节点大,所以从41向下
在第0层,51节点为要查找的节点,节点被找到,共查找4次
'
从此可以看出跳跃表比有序链表效率要高。
好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受