您的位置:首页 > 其它

跳跃表

2017-02-20 11:40 141 查看
1、跳跃表
结构模型(双向链表)





L1:某些数据的链表;(相当于快车)
L2:底层所有数据的链表;(相当于慢车)
L1和L2中键值相同的元素用链表连接起来

2、理想跳跃表



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

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

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

i、先查找x,在底层链表中的位置;
该新元素是否向上一层链表提升呢?抛硬币算法,正面的话(50%),向上提升一层,然后在继续抛硬币,正面继续提升,继续抛硬币,直到反面出现为止;
(2)、删除元素
找到最底层该元素后,逐一向上删除即可;

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

动态的搜索结构,随机化的数据结构;
每一个操作的运行时间都是:O(logn);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  跳跃表