首页 > 代码库 > 跳跃表
跳跃表
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
跳跃表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。