在计算机科学领域,跳跃链表是一种数据结构,允许快速查询一个有序连续元素的数据链表。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图)。一开始时,算法在最稀疏的层次进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。被挑过的元素可能被随机性地选择或确定性地选择,其中前者更为常见。[1]

跳跃列表是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在第i层中的元素按某个固定的概率p(通常为1/2或1/4)出现在第i+1层中。平均起来,每个元素都在 个列表中出现,而最高层的元素(通常是在跳跃列表前端的一个特殊的头元素)在 (即基于1/p的n的对数)个列表中出现。

要查找一个目标元素,起步于头元素和顶层列表,并沿着每个链表搜索,直到到达小于或着等于目标的最后一个元素。通过跟踪起自目标直到到达在更高列表中出现的元素的反向查找路径,在每个链表中预期的步数显而易见最多为1/p。所以查找的总体代价是 ,当p是常数时是 。通过选择不同p值,就可以在查找代价和存储代价之间作出权衡。

插入和删除的实现非常像相应的链表操作,除了"高层"元素必须在多个链表中插入或删除之外。

跳跃列表不像某些传统平衡树数据结构那样提供绝对的最坏情况性能保证,因为用来建造跳跃列表的扔硬币方法总有可能(尽管概率很小)生成一个糟糕的不平衡结构。但是在实际中它工作的很好,随机化平衡方案比在平衡二叉查找树中用的确定性平衡方案容易实现。跳跃列表在并行计算中也很有用,这里的插入可以在跳跃列表不同的部分并行的进行,而不用全局的数据结构重新平衡。

我们可以以下面的方式准随机地生成每一层:[2]

近似于无随机版本,准随机仅在需要运行一个{\displaystyle {\mathcal {O}}(n)}操作(访问每个节点)的时候进行。

跳跃列表由William Pugh发明。他在Communications of the ACMJune 1990, 33(6) 668-676 发表了Skip lists: a probabilistic alternative to balanced trees,在其中详细描述了他的工作。

引用发明者的话:

跳跃列表是在很多应用中有可能替代平衡树而作为实现方法的一种数据结构。跳跃列表的算法有同平衡树一样的渐进的预期时间边界,并且更简单、更快速和使用更少的空间。

相关查询: 计算机 数据链 多层次 示意图 下一个 随机性 确定性
最新查询:毒理学 神经病学 活泼的台北 电磁振荡 贵族学校 中文版Dreamweaver 8 Flash 8与Fireworks 8完全自学手册 ��ͷ�л���������Ⱦ 大冶保安石雕 cyberfront 复杂断块群四维应力场模型及油藏预测 学友光年世界巡回演唱会 死定了 注射用盐酸环丙沙星 段珪璋 电感器 弹簧!弹簧! 岩层与地表移动 抗生素 滨海沿岸产区 分散介质 段文娇 野鸭花生冬瓜皮汤 新编党课教程 月坛北街南营房一区 氢氧根 业务部 北宋龙泉窑青瓷刻花碗 段季红 修辞学家 相平衡 失神发作 共和制 同济大学中德学院 天仓萤 布拉斯敦峰 ɽĻ 刁莲 昆虫学 淮北平原 低等植物 华东地区 时幽冥 绝缘纸 波斯湾 畜禽产地检疫规范 弹药库 极讨厌 恐怖活动 国家法 汉语语言研究 气度不凡 乔大鳞盖蕨 qq九仙游戏人生 水文地质条件 额定功率 北印度洋季风环流 泡椒辣鱼丁 敏感性 供电系统 矗立在 绿化率 AGP显卡 中文Premiere Pro CS5完全自学手册 今朝流行 石油咽喉保卫战 绵阳市档案局 商业经济 小家鼠 新加坡华人在线 研究生学籍管理规定 护国寺感应塔碑 企业环境监测习题与解答 东线冬季作战章 民用建筑 刑法同步辅导与案例集 领导小组 温德尔 悲惨世界 经济学 跳跃列表
友情链接: 知道 电影 百科 好搜 问答 微信 值得买 巨便宜 天天特价 洛阳汽车脚垫 女装 女鞋 母婴 内衣 零食 美妆 汽车 油价 郑州 北京 上海 广州 深圳 杭州 南京 苏州 武汉 天津 重庆 成都 大连 宁波 济南 西安 石家庄 沈阳 南阳 临沂 邯郸 保定 温州 东莞 洛阳 周口 青岛 徐州 赣州 菏泽 泉州 长春 唐山 商丘 南通 盐城 驻马店 佛山 衡阳 沧州 福州 昆明 无锡 南昌 黄冈 遵义
© 2025 haodianxin 百科 豫ICP备14030218号-3 消耗时间:0.021秒 内存2.84MB