跳跃表介绍

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

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月前
|
存储
顺序存储之顺序表
这篇文章介绍了顺序表的创建、操作和顺序存储的实现,包括定义数据类型、构建顺序表结构、顺序表的创建、扩容、数据插入、删除、遍历和销毁。
43 0
|
7月前
|
存储 人工智能 缓存
|
存储 NoSQL 算法
跳表
跳表
132 0
|
8月前
|
NoSQL Redis C++
平衡二叉树、跳跃表
平衡二叉树、跳跃表
|
算法
HashMap 可不可以不使用链表,而直接使用红黑树或者二叉搜索树或者 AVL 等其他的数据结构?
HashMap 可不可以不使用链表,而直接使用红黑树或者二叉搜索树或者 AVL 等其他的数据结构?
69 0
|
存储 数据库 索引
跳表问题的探讨
跳表是一种高效的数据结构,它可以在有序链表上进行快速的搜索、插入、删除操作,时间复杂度为O(log n)。本文将介绍跳表的原理、实现方式以及其在实际应用中的优势和局限性。
191 0
|
存储 算法
【数据结构和算法】认识线性表中的链表,并实现单向链表(上)
【数据结构和算法】认识线性表中的链表,并实现单向链表(上)
【数据结构和算法】认识线性表中的链表,并实现单向链表(下)
【数据结构和算法】认识线性表中的链表,并实现单向链表(下)
|
存储 缓存 算法
那些年,散列表和链表的混合双打
那些年,散列表和链表的混合双打
318 0
那些年,散列表和链表的混合双打
|
索引
跳跃表原理
跳跃表原理
134 0
跳跃表原理