360免费建站怎么进不去,如何对网站的文件和资源进行优化?,单页面视频网站,网站主持“SkipList 的索引过程#xff0c;能否越两级搜索#xff1f;” 昨天#xff0c;一个工作 7 年的粉丝#xff0c;去某外包公司面试#xff0c;被问到这个问题不知道该怎么回答。 今天正好有空#xff0c;给大家分享一下这个问题的回答思路。 对了#xff0c;这个问题… “SkipList 的索引过程能否越两级搜索” 昨天一个工作 7 年的粉丝去某外包公司面试被问到这个问题不知道该怎么回答。 今天正好有空给大家分享一下这个问题的回答思路。 对了这个问题在我之前整理的 50 万字的大厂面试指南 里面有标准的回答大家可以去文章结尾中领取。 一、问题解析 SkipList很多人可能没听过它还有另外一个名字叫跳跃表如图。 跳跃表主要由以下部分构成 表头head负责维护跳跃表的节点指针。 跳跃表节点保存着元素值以及多个层。 层保存着指向其他元素的指针。 高层的指针越过的元素数量大于等于低层的指针为了提高查找的效率程序总是从高层先开始访问然后随着元素值范围的缩小慢慢降低层次。 表尾全部由 NULL 组成表示跳跃表的末尾。 我这样说大家理解起来觉得有点复杂简单来说就是在一个链表的基础上增加了多层索引这个层数是随机的。每一层索引都是原始链表的一个子集并且索引元素的间隔逐层增大这样就可以在较高的层级上进行快速搜索从而减少搜索的时间复杂度。 比如在如图这样一个跳跃表中想要查找 88 这个数字的位置它可以通过逐层跳跃快速找到相比于链表来说查找性能要快很多。 理解了这样一个背景再来看一下这个问题的回答。 二、问题总结 在一般情况下跳表的查找过程是从最高层开始逐层向下查找的每次查找都是在当 前层中找到小于目标元素的最大元素然后跳转到下一层继续进行查找。如果最后找到了目标元素就返回这个元素所在的节点否则返回空。所以对于跳跃表中的索引过程并没有直接跳跃两层检索的情况也是逐层进行判断最终获得查找的结果。 以上就是我的理解。 三、粉丝福利 最近很多同学问我有没有java学习资料我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我公众号“ 灰灰聊架构 ” 回复暗号“ 321 ”即可获取