跳跃表,也称跳表

news2024/11/13 12:35:48

跳表是Redis五种数据结构中有序集合Zset的底层实现

 可以看成多个有序链表

 链表相较于数组删除和插入的效率要高很多(改变指针指向就行)

但是在查找的时候跟数组比起来,速度就比较慢了,因为链表需要从头开始遍历

为了改变这个查找慢的弊端,采用空间换时间的策略,给链表加个索引,让链表支持二分查找(也就是说跳表就是带二分查找的链表)

每两个结点会抽出一个结点作为上一级索引结点

所以原始链表有n个元素,一级索引有n/2个元素,2级索引有n/4个元素,3级索引有n/8个元素,....

第k级索引有n/2k个元素,最高级索引一般有两个元素

跳表查找过程:

假如想要查找H这个结点

先是在最顶级的索引(这里是第3级索引)中比较,和A和I进行比较,发现H是处在A-I这个范围之中的,于是去下一级索引里面找

在第二级索引中先和A比较,然后和I比较,最后和E比较,最后确定H在E-I这个区间内,于是去下一级索引里面找

在第一级索引在E和I之间查找,和G作比较,发现在G-I之间,于是去原始链表的G-I之间查找

下图演示了:演示查找22这个数字的过程从最上层的链表一直查到最下面一层的链表

 

 

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

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

相关文章

索宝蛋白冲刺A股上市:计划募资5.5亿元,复星等为其股东

近日,宁波索宝蛋白科技股份有限公司(下称“索宝蛋白”)预披露更新招股书,准备在上海证券交易所主板上市。据贝多财经了解,索宝蛋白曾于2022年7月1日提交招股书,此次招股书更新了截至2022年6月30日的财务数据…

Java判断结构练习

目录 1.倍数 2.零食 3.区间 4.三角形 5.游戏时间 6.加薪 7.动物 8.选择练习1 9.DDD 10.点的坐标 11.三角形类型 12.游戏时间2 13.税 14.简单排序 15.一元二次方程公式 16.平均数3 1.倍数 读取两个正整数值 A 和 B。 如果其中一个是另一个的整数倍&#xff0c…

树状数组(代码模板和原理详解)

树状数组代码模板 普通数组:求前缀和: O(n)O(n)O(n),修改:O(1)O(1)O(1) 前缀和数组:求前缀和:O(1)O(1)O(1),修改:O(n)O(n)O(n) 鱼和熊掌不可兼得,当我们同时需要对一个…

NEZUKO: 1——202201152003

NEZUKO: 1——202201152003 About Release Back to the Top Name: nezuko: 1Date release: 21 Aug 2019Author: yunaranyancatSeries: nezuko Download Back to the Top Please remember that VulnHub is a free community resource so we are unable to check the machin…

在Java中使用堆排序求解TopK问题

在Java中使用堆排序求解TopK问题 1. 问题描述 给定一个很大的数组,长度100w,求第k大的数是多少? 这个问题是一个很经典的问题,如果采用传统方式,即现排序,然后找到第k个数,对于数据量很大的时…

Knowledge-based-BERT(一)

多种预训练任务解决NLP处理SMILES的多种弊端,代码:Knowledge-based-BERT,原文:Knowledge-based BERT: a method to extract molecular features like computational chemists,代码解析从K_BERT_pretrain开始。模型框架…

Tkinter的Listbox控件

Tkinter的Listbox控件是个选项框,主要是用来在给定的选项中选择一个 使用方法 创建选项框Listbox 和其他控件的创建方法一样,直接创建即可,命名为Lb Lbtk.Listbox(root) Lb.pack() 在选项框中加入选项 可以边创建边添加,即利…

【C#】WPF实现经典纸牌游戏,适合新手入门

文章目录1 纸牌类2 布局3 初始化4 事件点击牌堆拖动牌的去留源代码1 纸牌类 之所以产生这个无聊至极的念头,是因为发现Unicode中竟然有这种字符。。。 黑桃🂡 🂢 🂣 🂤 🂥 🂦 🂧 &…

【设计模式】结构型模式·外观模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧!> 学习汇总入口 一.概述 外观(Facade)模式是七大设计原则“迪米特法则…

谷粒商城-高级篇-Day12-性能压测和缓存

文章目录性能优化nginx动静分离优化三级分类的获取(优化业务)分布式缓存整合redis高并发下的缓存失效问题缓存穿透缓存雪崩缓存击穿解决这些问题分布式锁Redisson可重入锁(Reentrant Lock)指定过期时间读写锁闭锁信号量使用Redssi…

Python实现一个简易的CLI翻译程序

Python实现一个简易的CLI翻译程序Python百度翻译API实现一个简易的CLI翻译程序获取百度翻译API编写一个简单的Python程序Python百度翻译API实现一个简易的CLI翻译程序 之前翻译用的linux上的golddict,每次翻译都很慢。。。 所以想写一个简单快速的翻译命令行翻译软件 获取百度…

Allegro如何自动高亮不等长的网络操作指导

Allegro如何自动高亮不等长的网络操作指导 在做PCB设计的时候,时常需要要做等长,Allegro可以自动高亮一组内不等长的网络,可以直观的看到哪些网络长度是不满足的,类似下图 绿色的是通过的,红色是长度不足的,粉色是超长的 具体操作如下 选择Route-Timing Vision出现optio…

Springboot359的医院病历管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 2 第3章 系统分析 3 3.1 需求分析 3 3.2 系统可行性分析 4 3.2.1技术可行性:技术背景 4 3.2.2经济…

Ubiquiti MAC Address Changer 3.0 Crack

Ubiquiti MAC Address Changer,目前mac address changer的版本有很多,本次发布的是V3版本,这是一款功能非常强大的修改网卡mac地址软件,基本上所有的网卡MAC地址都支持修改,包括虚拟机和TeamViewer软件都是支持的。 Ea…

5、基本数据类型

目录 一、整数类型 二、浮点类型 三、字符类型 四、布尔类型 一、整数类型 整数类型用来存储整数数值,即没有小数部分的数值。可以是正数,也可以是负数。整 型数据在Java程序中有3种表示形式,分别为十进制、八进制和十六进制。 1.十进…

2.4.4 数值类型的转换

文章目录1.运算时的自转2.运算时的强转3.强转时的精度丢失问题1.运算时的自转 不同数字类型之间的大小关系如下:double > float > long > int > char, short,byte 自转:小类型的数据可以直接赋值给大类型的变量; byte short c…

Linux(五)创建一个miniShell

前情提要:掌握进程控制中的进程创建、进程终止、进程等待、进程替换。可以参考下方博文 LInux(四)进程控制(创建、终止、等待、替换) 了解strtok函数的使用 正文: 目录 Shell是什么? 如何…

蓝桥杯之二分与前缀和

蓝桥杯之二分二分板子?第一次和最后一次出现的位置机器人跳跃问题四平方和分巧克力?典型二分找大的(从右往左找)二分upper_bound(a1,an1,x)-a?递增三元组前缀和取余?K倍区间二维前缀和?激光炸弹…

17种编程语言实现排序算法-合并排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言:C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…

分享139个ASP源码,总有一款适合您

ASP源码 分享139个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 139个ASP源码下载链接:https://pan.baidu.com/s/1Vk4U4EXVCWZWPMWf9ax2dw?pwdif23 提取码&#x…