首页 > 代码库 > 跳跃表

跳跃表

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

跳跃表