SkipList 的索引过程,能否越两级搜索

“SkipList 的索引过程,能否越两级搜索?”
昨天,一个工作 7 年的粉丝,去某外包公司面试,被问到这个问题不知道该怎么回答。
今天正好有空,给大家分享一下这个问题的回答思路。
对了,这个问题在我之前整理的 50 万字的大厂面试指南 里面,有标准的回答,大家可以去文章结尾中领取。

一、问题解析

SkipList,很多人可能没听过,它还有另外一个名字叫跳跃表(如图)。
跳跃表主要由以下部分构成:
表头(head):负责维护跳跃表的节点指针。
跳跃表节点:保存着元素值,以及多个层。
层:保存着指向其他元素的指针。
高层的指针越过的元素数量大于等于低层的指针,为了提高查找的效率,程序总是从高层先开始访问,然后随着元素值范围的缩小,慢慢降低层次。
表尾:全部由 NULL 组成,表示跳跃表的末尾。
我这样说,大家理解起来觉得有点复杂,简单来说,就是在一个链表的基础上,增加了多层索引,这个层数是随机的。每一层索引都是原始链表的一个子集,并且索引元素的间隔逐层增大,这样就可以在较高的层级上进行快速搜索,从而减少搜索的时间复杂度。
比如,在(如图)这样一个跳跃表中,想要查找 88 这个数字的位置,它可以通过逐层跳跃快速找到,相比于链表来说,查找性能要快很多。
理解了这样一个背景,再来看一下这个问题的回答。

二、问题总结

在一般情况下,跳表的查找过程,是从最高层开始逐层向下查找的,每次查找都是在当 前层中找到小于目标元素的最大元素,然后跳转到下一层,继续进行查找。如果最后找到了目标元素,就返回这个元素所在的节点,否则返回空。所以,对于跳跃表中的索引过程,并没有直接跳跃两层检索的情况,也是逐层进行判断最终获得查找的结果。
以上就是我的理解。

 三、粉丝福利

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ 
灰灰聊架构 ”, 回复暗号:“ 321 ”即可获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper 实战(四) Curator Watch事件监听

文章目录 ZooKeeper 实战(四) Curator Watch事件监听0.前言1.Watch 事件监听概念2.NodeCache2.1.全参构造器参数2.2.代码DEMO2.3.日志输出 3.PathChildrenCache3.1.全参构造器参数3.2.子节点监听时间类型3.2.代码DEMO 4.TreeCache4.1.构造器参数4.2.代码DEMO4.3.日志输出 ZooKe…

Flink(十二)【容错机制】

前言 最近已经放假了,但是一直在忙一个很重要的自己的一个项目,用 JavaFX 和一个大数据组件联合开发一个功能,也算不枉我学了一次 JavaFX,收获很大,JavaFX 它作为一个 GUI 开发语言,本质还是 Java&#xff…

MSF流量加密

1、背景介绍 在MSF中生成shell,并上线运行时。都是通过http https tcp等协议传输。虽然MSF本身会对流量进行加密,但MSF太出名以致于其加密特征容易被IPS,WAF等可以检测带有攻击的特征的设备拦截或记录。 2、生成 SSL 证书 openssl req -x50…

Python操作PPT:轻松创建、编辑和展示幻灯片

引言: 在现代办公环境中,演示文稿已经成为一种常见的沟通工具。然而,使用传统的PowerPoint软件创建和编辑幻灯片可能会耗费大量的时间和精力。幸运的是,Python作为一种功能强大的编程语言,提供了许多库和工具&#xff…

关于运维·关于数据库面试题

目录 一、数据库类型 二、数据库引擎 三、mysql数据库类型 四、mysql的约束添加 五、主从复制原理 六、主从方式有几种 七、mysql主从数据不一致的原因 八、mysql的优化 九、什么是事务的特征 十、数据库读写分离的好处 十一、怎样优化sql语句 十二、mysql的同步方…

二Dockerfile实战

Dockerfile实战 实战1&#xff1a;使用Dockerfile修改Nginx首页 创建一个Dockerfile&#xff0c;内容如下&#xff1a; FROM nginx RUN echo <h1>Spring Cloud与Docker微服务实战</h1> > /usr/share/nginx/html/index.html实战2&#xff1a;使用Dockerfile在…

谷粒商城-商品服务-品牌管理-阿里云云存储+JSR303数字校验+统一异常处理

阿里云云存储OSS 分布式系统上传文件 分布式系统上传文件 单体应用上传&#xff1a;上传文件到服务器&#xff0c;想获取文件时再向服务器发请求获取文件。 分布式系统上传&#xff1a; 因为有多台服务器&#xff0c;为防止负载均衡导致获取文件时没找到对应的服务器&#xf…

实用编程调试技巧

目录 一、调试的基本步骤 二、Debug和Release的介绍 三、Windows环境调试介绍 1.调试环境的准备 2.学会快捷键 最常用的几个快捷键&#xff1a; 断点应用举例&#xff1a; 3.调试的时候查看程序当前信息 &#xff08;1&#xff09…

GitHub注册新账号的操作流程(详细)

目录 第一步 进入官网&#xff0c;点击右上角的"Sign up" 第二步 输入email地址 第三步 设置密码 第四步 输入昵称 第五步 根据个人喜好决定要不要接收GitHub的邮件推送。然后回答他们的验证问题 第六步 输入验证码 我在注册github账号时遇到过一些阻碍&#x…

软件测试|教你使用Python绘制正多边形

简介 绘制正多边形是Python图形编程的基本任务之一。在本文中&#xff0c;我将为你提供一个使用Python绘制正多边形的详细教程&#xff0c;并提供一个示例代码。我们将使用Python的Turtle库来进行绘制。 步骤1&#xff1a;导入Turtle库 我们需要先安装好Python环境&#xff…

Shiro框架:Shiro内置过滤器源码解析

目录 1. 常见项目中过滤器配置 2.Url访问控制配置解析为内置过滤器 2.1 DefaultFilterChainManager构造并注册内置过滤器 2.2 构造过滤器链 3. Shiro内置过滤器解析 3.1 内置过滤器概览 3.2 公共继承类解析 3.2.1 顶层Filter接口 3.2.2 AbstractFilter 3.2.3 Nameab…

二十几种未授权访问漏洞合集

未授权访问漏洞是一个在企业内部非常常见的问题&#xff0c;这种问题通常都是由于安全配置不当、认证页面存在缺陷&#xff0c;或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放&#xff0c;并且对用户的访问没有做任何限制的时候&#xff0c;可能会泄露出某…

PLC数组队列搜索FC(SCL代码+梯形图程序)

根据输入数据搜索输入数据队列中和输入数据相同的数,函数返回其所在队列的位置。这里我们需要用到博途PLC的数组指针功能,有关数组指针的详细使用方法,可以参考下面文章: 博途PLC数组指针: https://rxxw-control.blog.csdn.net/article/details/134761364 区间搜索FC …

常用计算电磁学算法特性与电磁软件分析

常用计算电磁学算法特性与电磁软件分析 参考网站&#xff1a; 计算电磁学三大数值算法FDTD、FEM、MOM ADS、HFSS、CST 优缺点和应用范围详细教程 ## 基于时域有限差分法的FDTD的计算电磁学算法&#xff08;含Matlab代码&#xff09;-框架介绍 参考书籍&#xff1a;The finite…

【python】06.函数和模块的使用

函数和模块的使用 在讲解本章节的内容之前&#xff0c;我们先来研究一道数学题&#xff0c;请说出下面的方程有多少组正整数解。 事实上&#xff0c;上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 可以用Python的程序来…

Spring Boot 整合支付宝实现在线支付方案(沙箱环境)

文章目录 1.理解沙箱环境2.沙箱环境接入准备2.1 访问开发者控制台2.2 获取重要信息2.3 处理秘钥 3.接入支付宝支付的流程4.实现支付4.1 添加 SDK 依赖4.2 创建配置类4.3 支付宝订单管理接口实现流程4.4 支付宝支付接口实现流程 5.支付宝支付功能演示7.总结 TIP&#xff1a;对于…

软件测试常见问题2

1.用jmeter怎么进行测试&#xff1f; 使用JMeter进行测试的步骤如下&#xff1a; 启动JMeter&#xff0c;右键点击测试计划&#xff0c;选择添加->Threads(Users)->线程组&#xff0c;在线程组下创建请求。在请求中添加HTTP请求信息头&#xff0c;右键点击HTTP请求&…

15-MT-Channel based Broker和Kafka Channel模式

部署MT-Channel based Broker URL&#xff1a; https://knative.dev/docs/install/yaml-install/eventing/install-eventing-with-yaml/#optional-install-a-broker-layer kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.12.1/mt-channel…

2023年复盘—坚持长期主义

大家好,这里是大话硬件。 按照往年的逻辑,很多知识博主都会在12月份发出2023年的年终总结出来,但是今年好像很多博主还没有更新类似总结文章。去年我是在12月24号更新的,今年的总结文章在上周有一些简单的构想,但是没有时间写,因此,这篇文章对2023 年进行一个复盘。 复…

【UEFI基础】EDK网络框架(VLAN)

VLAN VLAN代码综述 在MNP中有很多的VLAN介绍&#xff0c;MNP存在的一个重要原因也是为了处理VLAN&#xff0c;而本文介绍的NetworkPkg\VlanConfigDxe\VlanConfigDxe.inf其实只是一个帮助模块&#xff0c;真正的VLAN配置还是在MNP中。 VLAN同样是一个UEFI Driver Model&#…