首页 > 其他 > 详细

跳跃表

时间:2017-02-20 14:09:01      阅读:195      评论:0      收藏:0      [点我收藏+]

1、跳跃表

  结构模型(双向链表)

技术分享 

  L1:某些数据的链表;(相当于快车)

  L2:底层所有数据的链表;(相当于慢车)

  L1和L2中键值相同的元素用链表连接起来


2、理想跳跃表

技术分享

  跳跃表的这种数据结构就是二分查找(用链表模拟数组),差不多就是一颗二叉树,但是有太多的重复元素;查找的时间复杂度为:O(logn);


3、跳跃表的插入和删除

  保证左上角一直有元素存在,在开始的时候,先放一个负无穷的数字(保证每一层的开始都是这个负无穷的数字);目的:防止很大的数字被提升之后的情况;

  (1)插入元素x(构建跳跃表的方法) ---->要随机的选择它能跑多高

  i、先查找x,在底层链表中的位置;

  该新元素是否向上一层链表提升呢?抛硬币算法,正面的话(50%),向上提升一层,然后在继续抛硬币,正面继续提升,继续抛硬币,直到反面出现为止;

  (2)、删除元素

  找到最底层该元素后,逐一向上删除即可;

  (3)、跳跃表数据结构分析:

  动态的搜索结构,随机化的数据结构;

  每一个操作的运行时间都是:O(logn);



本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1899414

跳跃表

原文:http://wait0804.blog.51cto.com/11586096/1899414

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!