信息竞赛之跳跃表.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息竞赛之跳跃表.ppt

跳跃表 跳跃表由多条链构成(S0,S1,S2 ……,Sh),且满足如下三个条件: 每条链必须包含两个特殊元素:+∞ 和 -∞ S0包含所有的元素,并且所有链中的元素按照升序排列。 每条链中的元素集合必须包含于序数较小的链的元素集合。 O(logn) 查找元素x 1. 从最上层的链(Sh)的开头开始 2. 假设当前位置为p,它向右指向的节点为q(p与q不一定相邻),且q的值为y。将y与x作比较 (1) x=y? 输出查询成功及相关信息 (2) xy? 从p向右移动到q的位置 (3) xy? 从p向下移动一格 3. 如果当前位置在最底层的链中(S0),且还要往下移动的话,则输出查询失败 插入元素x 向跳跃表中插入一个元素,相当于在表中插入一列从S0中某一位置出发向上的连续一段元素。有两个参数需要确定,即插入列的位置以及它的“高度”。 位置:利用跳跃表的查找功能,找到比x小的最大的数y。根据跳跃表中所有链均是递增序列的原则,x必然就插在y的后面。 高度:不确定性,决策影响算法效率,随机化算法 r:=rand(); if rp then A else B; 初始时列高为1。插入元素时,不停地执行随机决策模块。 如果要求执行的是A操作,则将列的高度加1,并且继续反复执行随机决策模块。 直到第i次,模块要求执行的是B操作,我们结束决策,并向跳跃表中插入一个高度为i的列。 ? 假设插入元素“40”,且在执行了随机决策模块后得到高度为4 步骤一:找到表中比40小的最大的数,确定插入位置 步骤二:插入高度为4的列,并维护跳跃表的结构 删除元素x 在跳跃表中查找到这个元素的位置,如果未找到,则退出 将该元素所在整列从表中删除 将多余的“空链”删除? 郁闷的出纳员 老板经常调整员工工资。可能把每位员工的工资加上一个相同的量,可能会把他们的工资扣除一个相同的量。 老板经常会来询问工资情况,询问第k多的员工拿多少工资。 出纳命令: I_k 新建一个工资档案,初始工资为k。如果某员工的工资低于工资下限(事先给出),他将立刻离开公司。 A_k 把每位员工的工资加上k S_k 把每位员工的工资扣除k F_k 查询第k多的工资 I命令的条数不超过100000,A命令和S命令的总条数不超过100,F命令的条数不超过100000,每次工资调整的调整量不超过1000,新员工的工资不超过100000,初始时公司没有员工。 * *

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档