SkipList详解

SkipList详解本文参考 大数据日知录 概念 SkipList 是一种用来代替平衡树的数据结构 虽然在最坏的情况下 SkipList 的效率要低于平衡树 但是大多数情况下效率仍然非常高 其插入 删除 查找的时间复杂度都是 O log N 除了高效外 其实现和维护非常简单也是一大优势 SkipList 的使用还是比较广泛的 比如在 LevelDB 中的 MemTable 就是使用 SkipList 实现的 Redis 的

本文参考:《大数据日知录》

概念

SkipList的使用还是比较广泛的,比如在LevelDB中的MemTable就是使用SkipList实现的,Redis的Sorted Set也是使用SkipList实现的。

核心思路

SkipList节点的生成

SkipList的查找

在这里插入图片描述
还是以此图为例,比如现在要找12这个节点,那么过程如下:

  1. 首先到3的节点,12>3,所以进入6的节点。
  2. 在6的节点,26>6,并且12<25,12>9,所以进入9的节点。
  3. 在9的节点,12<17,12=12,于是就找到了12的节点。

SkipList的插入

在这里插入图片描述在这里插入图片描述
以上图为例,现在要插入17这个节点。
其过程和查找类似,唯一的问题是,前面的节点的指针是如何保留下来的?

  • update[0]:12 level=0
  • update[1]:9 level=1
  • update[2]:6 level=2
  • update[3]:6 level=3

SkipList的删除

删除的逻辑和插入类似:

  1. 查找到相应的节点
  2. 通过update数组来实现该节点的逻辑删除
  3. 回收该节点资源
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • tomcat7编译

    tomcat7编译本文是Tomcat源代码阅读系列的第一篇文章,在阅读Tomcat源代码之前,我们首先需要将Tomcat的源代码在IDE里面运行起来,这样方便我们阅读的过程中调试。本文总结一下在IDEA或者Eclipse中运行Tomcat源代码环境的搭建过程,同时我们通过Maven来负责项目的构建。在进行搭建之前,我们首先来说一下总体的思路。我们知道Tomcat运行的时候,一部分是源代码编译以后的可运行

    2022年7月18日
    18
  • 服务器要删除文件访问被拒绝,Win7系统删除文件提示文件访问被拒绝怎么办

    服务器要删除文件访问被拒绝,Win7系统删除文件提示文件访问被拒绝怎么办近期 有用户反映 win7 删除文件弹出 文件访问被拒绝 情况 这是怎么回事呢 怎么办呢 接下来大家跟着学习啦小编一起来了解一下 Win7 系统删除文件提示文件访问被拒绝的解决方法吧 Win7 系统删除文件提示文件访问被拒绝解决方法一 查杀木马 对于这种顽固文件 首先要检查它是否被木马侵袭 如果真是文件中毒 立刻进行杀除 之后再尝试删除文件 就可以正常删除了 二 直接结束运行 1 使用 Ctrl Alt Del

    2026年3月16日
    2
  • LoadRunner11完美激活成功教程「建议收藏」

    LoadRunner11完美激活成功教程「建议收藏」今天装完LoadRunner后,发现怎么都启动不了,最后找了很久的注册码global-100:AEAMAUIK-YAFEKEKJJKEEA-BCJGIweb-10000:AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB很管用了!

    2022年7月22日
    11
  • 马拉车java_算法-Manacher算法 / 马拉车算法(Java实现)

    马拉车java_算法-Manacher算法 / 马拉车算法(Java实现)Manacher 算法 也叫 马拉车 算法 Manacher 算法的应用范围要狭窄得多 但是它的思想和拓展 kmp 算法有很多共通支出 所以在这里介绍一下 Manacher 算法是查找一个字符串的最长回文子串的线性算法 什么是回文串 所谓回文串 简单来说就是正着读和反着读都是一样的字符串 比如 abba noon 等等 一个字符串的最长回文子串即为这个字符串的子串中 是回文串的最长的那个 计算回文串的几种方式

    2026年3月17日
    1
  • alternatives java_linux系统alternatives使用(java,javac,jar)

    alternatives java_linux系统alternatives使用(java,javac,jar)host localhost alternatives 3 44 Copyright C 2001RedHat Inc Thismaybefre usage alternatives

    2026年3月20日
    2
  • linux 海思hi3798m_海思Hi3798模块芯片,Hi3798处理器参数介绍[通俗易懂]

    linux 海思hi3798m_海思Hi3798模块芯片,Hi3798处理器参数介绍[通俗易懂]Hi3798CV200是用于DVB和IPTV机顶盒市场的支持4KP60解码的超高清高性能SOC芯片,集成4核64位高性能CortexA53处理器、内置NEON加速引擎,强大的CPU处理能力可以满足各种差异化的业务需求。在码流兼容性、在线视频播放的流畅性、图像质量以及整机性能方面保持业界最好的用户体验。Hi3798支持4Kx2K@P6010bit超高清视频解码,支持H.265/HEVC、H.2…

    2022年6月24日
    200

发表回复

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

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