如何理解跳跃表结构

2022年7月28日 25点热度 0人点赞

链表虽然添加和删除操作比较快速,但是查询时却需要从起点遍历。所以,链表的查询操作影响性能。

跳跃表通过增加多层的排序链表,在查找时能显著提升效率。

本文介绍跳跃表数据结构以及添加、删除节点时详细过程。

 

工具/原料

  • notepad++等编辑器
  • word等画图工具

方法/步骤

  1. 1

    跳跃表结构:跳跃表是一个包含多层的顺序链表。其结构如下图所示:

     

  2. 2

    每一层都是有序的,最后一层包含所有的数据,而中间每层只包含部分数据。如果一个数据出现在某一层,则往下每层都包含该数据。

    由此,跳跃表其实就是类似一个十字链表结构。

     

  3. 3

    跳跃表查找:跳跃表就是用来提高查找效率的,从最顶层开始查找,如果找到节点则返回。如果节点小,则继续在该层查找。如果未找到或找到节点大,则转向下一层继续查找。

    比如下图中查找节点9,只需要3个步骤就能快速找到。如果是顺序链表,则需要9次。

     

  4. 4

    添加节点:首先需要查找节点插入到合适位置,并且给该节点设置合适的层数。

    计算节点添加到链表中哪一层是一个问题,因为层数分布的约稀疏其实对查找效率提升的更快。

    一种算法是:抛硬币方式,添加节点默认在第一层,至于是否添加后后面几层,每层都执行一个随机算法决定。

     

  5. 5

    在连续计算随机数得到节点跨越层数后,我们在每一层中更新链表结构。

    如下图,添加节点4,其层数为3。则修改每一层4节点前后链表。

     

  6. 6

    删除节点:已经知道节点跨越层数,所以删除该节点时,需要更新每一层的链表结构。具体过程与十字链表的更新类似。

    如下,我们再将节点4删除后,跳跃表结构:

     

    END

注意事项

  • 跳跃表中每一层都是一条有序链表
  • 最底层的链表包含所有元素
  • 添加删除操作,需要正确更新每一层链表结构
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论