美文网首页
跳跃表skiplist原理

跳跃表skiplist原理

作者: arkulo | 来源:发表于2016-01-14 11:02 被阅读541次

github地址:
https://github.com/arkulo56/thought/blob/master/software/algorithm/%E7%AE%97%E6%B3%95---%E8%B7%B3%E8%B7%83%E8%A1%A8(skiplist)%E5%8E%9F%E7%90%86.md

跳跃表(skiplist)原理

跳跃表也是一种数据查找结构,如果红黑树,AVL等一样,不过因为其插入修改的时候不需要做大范围的平衡操作,只需要局部范围的修改指针(锁的范围较小),因此有很多成熟的代码在使用它,例如redis就用它来实现有序集合。

原理

简单的讲,他还是一个list!只不过查找的时候不用一个一个的去遍历元素!

看这个例子,我们给其中的一些元素多加了一个指针,指向当前位置+2的元素,如果要遍历查找,根据上面这层的指针,我们可以减少很多次遍历!!

如果觉得上面这种情况减少的遍历次数还不够,那我们是不是可以多加几层指针,跨度再大一些!!

应该给每个元素加几层?

有些程序是按照算法取随机数,有些程序是在随机算法的基础上再和当前最大层数做比较,那最简单的做法是扔硬币,字朝上就加一层直到花朝上就停止,这就是该元素的层数

操作

说说操作吧,我们就来看看插入操作是如何完成的,其他操作类似。

  1. 首先要确定新增加元素的层数
  2. 如果新添是i层节点,那就从head节点的forword[i]开始向后遍历,做插入的指针修改。记住!这里是操作的重点,这就像一个单链表的插入一样,只不过我们是多个单链表组合在一起。

代码

...稍后补充

相关文章

  • 跳跃表skiplist原理

    github地址:https://github.com/arkulo56/thought/blob/master/...

  • 跳跃表(skiplist)

    鸣谢: https://blog.csdn.net/xiaolei1982/article/details/507...

  • SkipList(跳跃表)

    简介   跳跃表是一种单链表形式的链式结构,不同于一般的链式结构其为多层链式结构。正因为这种多层结构从而相比于单式...

  • skiplist 跳跃表分析

    跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(log...

  • 科普跳跃表-SkipList

    什么是跳表 跳表是一种有序的数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问的目的。 核心...

  • Redis 跳跃表(skiplist)

    Redis基础类型中的有序集合、集群节点的内部数据结构用到了跳跃表(skiplist)。 5.1 跳跃表的实现 图...

  • Redis(2)——跳跃表

    一、跳跃表简介 跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文《Skip ...

  • python实现跳跃表(SkipList)

    跳跃表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AV...

  • [redis 源码走读] 跳跃表(skiplist)

    跳跃表 张铁蕾的博客将 skiplist 原理和算法复杂度描述得很清楚,具体可以参考。我分享一下自己对部分源码的阅...

  • Redis设计与实现4 有序集合对象(跳跃表)的介绍

    跳跃表  跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速...

网友评论

      本文标题:跳跃表skiplist原理

      本文链接:https://www.haomeiwen.com/subject/eaackttx.html