跳跃表介绍

简介: 有序集合在生活中比较常见,例如根据成绩对学生排名,根据得分对玩家排名等。对于有序集合的底层实现,可以用数组、平衡树、链表等。数组不便元素的插入、删除;平衡树或红黑树虽然效率高但结构复杂;链表查询需要遍历所有效率低。

1、简介



有序集合在生活中比较常见,例如根据成绩对学生排名,根据得分对玩家排名等。对于有序集合的底层实现,可以用数组、平衡树、链表等。数组不便元素的插入、删除;平衡树或红黑树虽然效率高但结构复杂;链表查询需要遍历所有效率低。Redis采用的是跳跃表。跳跃表效率堪比红黑树,实现远比红黑树简单。


2、实例



对比有序链表和跳跃表,从链表中查询出51


  1. 有序链表:


b727f77858434563855e370871ac91bd.png

要查找值为51的元素,需要从第一个元素开始依次查找、比较才能找到。共需要6次比较。


    2.跳跃表


8be53e3e03cf49309cc0d20bc8c0896a.png


从第2层开始,1节点比51节点小,向后比较。

21节点比51节点小,继续向后比较,后面就是NULL了,所以从21节点向下到第1层

在第1层,41节点比51节点小,继续向后,61节点比51节点大,所以从41向下

在第0层,51节点为要查找的节点,节点被找到,共查找4次。

从此可以看出跳跃表比有序链表效率要高

相关文章
|
3月前
|
NoSQL 算法 Java
数据结构之跳表理解
数据结构之跳表理解
57 0
|
4月前
|
NoSQL Redis C++
平衡二叉树、跳跃表
平衡二叉树、跳跃表
|
4月前
|
存储 NoSQL Redis
Redis数据结构之——跳表skiplist
Redis数据结构之——跳表skiplist
|
10月前
|
存储 NoSQL 算法
跳表
跳表
78 0
|
10月前
|
存储 数据库 索引
跳表问题的探讨
跳表是一种高效的数据结构,它可以在有序链表上进行快速的搜索、插入、删除操作,时间复杂度为O(log n)。本文将介绍跳表的原理、实现方式以及其在实际应用中的优势和局限性。
83 0
|
11月前
|
NoSQL Redis 索引
【数据结构】跳表
【数据结构】跳表
52 0
|
11月前
|
存储 NoSQL 算法
Redis从入门到精通之答疑为什么ZSet使用跳跃表而不是平衡树、哈希表
有同学阅读了Redis从入门到精通章节中的《Redis从入门到精通之底层数据结构跳表 SkipList》向我提问Redis从入门到精通之答疑为什么ZSet使用跳跃表而不是平衡树、哈希表。今天就做一个解答
890 2
Redis从入门到精通之答疑为什么ZSet使用跳跃表而不是平衡树、哈希表
|
存储 算法 NoSQL
常见数据结构-跳表
常见数据结构-跳表
|
存储 缓存 算法
那些年,散列表和链表的混合双打
那些年,散列表和链表的混合双打
289 0
那些年,散列表和链表的混合双打
|
存储 数据库 C++
【数据结构】跳表SkipList代码解析(C++)
【数据结构】跳表SkipList代码解析(C++)