SkipList 原理

SkipList 原理跳表是允许在有序序列元素内快速搜索的数据结构 通过维护子序列的链接层次结构可以快速搜索 每个连续的子序列跳过比前一个更少的元素 搜索开始于最小的子序列 直到找到两个连续的元素 一个更小 一个大于或等于所搜索的元素 通过链接层次结构 这两个元素链接到下一个最短子序列的元素 其中搜索继续 直到最后我们以完整的顺序搜索 可以概率地或确定性地选择跳过的元素完整的跳表的图示

跳表是允许在有序序列元素内快速搜索的数据结构。

通过维护子序列的链接层次结构可以快速搜索,每个连续的子序列跳过比前一个更少的元素。搜索开始于最小的子序列,直到找到两个连续的元素,一个更小,一个大于或等于所搜索的元素。通过链接层次结构,这两个元素链接到下一个最短子序列的元素,其中搜索继续,直到最后我们以完整的顺序搜索。可以概率地或确定性地选择跳过的元素



完整的跳表的图示



SkipList 原理



跳表是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说跳表的插入和删除的工作是比较简单的。

下面来研究一下跳表的核心思想:

先从链表开始,如果是一个简单的链表,那么我们知道在链表中查找一个元素I的话,需要将整个链表遍历一次。

SkipList 原理 

 如果是说链表是排序的,并且节点中还存储了指向前面第二个节点的指针的话,那么在查找一个节点时,仅仅需要遍历N/2个节点即可。

SkipList 原理 

这基本上就是跳表的核心思想,其实也是一种通过“空间来换取时间”的一个算法,通过在每个节点中增加了向前的指针,从而提升查找的效率。

使用跳过列表的应用程序和框架列表:

  • MemSQL使用跳过列表作为其数据库技术的主要索引结构。
  • Cyrus IMAP服务器提供了一个“skiplist”后端DB实现
  • Lucene使用跳过列表以对数时间搜索增量式编码的发布列表。
  • QMAP(最多Qt的4)模板类的Qt的,提供了一个字典。
  • Redis是用于Posix系统的ANSI-C开源持久密钥/值存储,它在执行有序集时使用跳过列表。
  • nessDB是一个非常快速的键值嵌入式数据库存储引擎(使用日志结构合并(LSM)树),它的memtable使用了跳过列表。
  • skipdb是使用有序键/值对的开源数据库格式。
  • Java 1.6 API中的ConcurrentSkipListSetConcurrentSkipListMap
  • 速度表是Tcl的一个快速键值数据存储区,它使用滑雪板进行索引和无锁共享内存。
  • leveldb是一种用于在Google中编写的快速键值存储库,它提供从字符串键到字符串值的有序映射
  • Con Kolivas的MuQSS [8] Linux内核计划程序使用跳过列表
  • SkiMap使用跳过列表作为基础数据结构,为机器人映射系统构建更复杂的3D稀疏网格






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179365.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:45
下一篇 2026年3月26日 下午3:45


相关推荐

  • Hi3516DV300开发板——2.uboot、kernel、fs文件系统烧写

    Hi3516DV300开发板——2.uboot、kernel、fs文件系统烧写前言搭建环境教程:Hi3516DV300开发板——1.环境搭建此教程默认环境:Win10+VMware+Ubuntu18.04这篇文章只针对使用Windows下使用网口进行烧录,所以需要有一根网线和一根串口线直连电脑。不要问为什么不用串口,因为我之前串口烧录了2个小时还没成功,最后网口1分半钟烧录成功,至于官方提供的vscode,对serialport太不好装了,果断放弃。百度云过期可以留邮箱发需要哪个@@@@烧写准备1.安装USB转串口的驱动程序链接:USB-to-SerialC

    2026年2月21日
    6
  • QUOTENAME函数的用法

    QUOTENAME函数的用法quotename函数的语法为:quotename('expression1','expression2')expression1:指的是需要被特殊处理的字符expre

    2022年7月3日
    38
  • 流媒体:RTMP 协议完全解析

    流媒体:RTMP 协议完全解析转自 流媒体 RTMP 协议完全解析 知乎 zhihu com 背景 RTMP RealTimeMess 是由 Adobe 公司基于 FlashPlayer 播放器对应的音视频 flv 封装格式提出的一种 基于 TCP 的数据传输协议 本身具有稳定 兼容性强 高穿透的特点 常被应用于流媒体直播 点播等场景 常用于推推流方 主播 的稳定传输需求 一 RTMP 的传输 消息块 amp 消息封包传输 RTMP 协议为了维持稳定连续传递 避免单次传输数据量问题

    2026年3月18日
    2
  • 2021年材料员-岗位技能(材料员)新版试题及材料员-岗位技能(材料员)考试试卷

    2021年材料员-岗位技能(材料员)新版试题及材料员-岗位技能(材料员)考试试卷题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:硝化工艺题库来源:安全生产模拟考试一点通公众号小程序安全生产模拟考试一点通:硝化工艺考试内容是安全生产模拟考试一点通生成的,硝化工艺证模拟考试题库是根据硝化工艺最新版教材汇编出硝化工艺仿真模拟考试。2021年硝化工艺考试内容及硝化工艺考试报名1、【单选题】三不动火是指:没有经批准的动火作业票不动火;监护人不在现场不动火;()。(A)A、安全措施不落实不动火B、分析不合格不动火C、领导不在现场不动火2、【单选题】苯硝化

    2022年5月30日
    43
  • Pycharm更换主题

    Pycharm更换主题文章目录下载更换主题下载首先去主题商店下载喜欢的主题 ThemesMap 在商店里边选择自己喜欢的主题 下载即可 更换主题

    2026年3月27日
    2
  • linux下rsync命令,linux上的rsync命令详解

    linux下rsync命令,linux上的rsync命令详解rsync 简介 rsync 就是远程同步的意思 remotesync rsync 被用在 UNIX Linux 执行备份操作操作 rsync 工具包被用来从一个位置到另一个位置高效地同步文件和文件夹 rsync 可以实现在同一台机器的不同文件直接备份 也可以跨服务器备份 rsync 的重要特性 速度快 初次同步时 rsync 会全量拷贝从源文件或目录到目标位置 第二次往后同步时 rsync 仅

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号