【数据结构】跳表

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【数据结构】跳表

跳表是什么


跳表的全称是跳跃表,它的基础是有序链表,在有序链表的基础上,增加多级索引,实现快速查找。


为什么需要跳表


可以看出来,跳表是从有序链表发展来的,它是为了解决链表查找速度慢的问题而设计的,通过跳表,可以将查找速度从O(n)提高到O(log(n)),而空间复杂度还维持在O(n),虽然空间复杂度看起来并没有变化,但肯定是比之前要耗费空间的,所以跳表属于用空间换时间。


跳表的数据结构


可以看一下跳表的数据结构



跳表性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。


可以看到,当我们对链表进行增删改的时候,其实对应的索引我们也要相应进行维护,当进行插入的时候,redis来说,是通过一个随机函数,来控制是否往索引里添加数据的。比如随机函数生成了值K,那就将这个结点添加到第一级到第 K 级这 K 级索引中。


延伸


我们都知道redis使用的是跳表,而不是红黑树,可能有以下原因。


redis要支持按照区间查找数据,跳表比红黑树更合适。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16天前
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet
|
6月前
|
存储 NoSQL 算法
【高阶数据结构】跳表 -- 详解
【高阶数据结构】跳表 -- 详解
|
6月前
|
C语言 索引
嵌入式中一文搞定C语言数据结构--跳表
嵌入式中一文搞定C语言数据结构--跳表
44 0
|
6月前
|
NoSQL 算法 Java
数据结构之跳表理解
数据结构之跳表理解
93 0
|
6月前
|
NoSQL 算法 Java
数据结构之跳表理解
数据结构之跳表理解
45 0
数据结构之跳表理解
|
6月前
|
NoSQL Go Redis
golang数据结构篇之跳表
golang数据结构篇之跳表
50 0
|
6月前
|
存储 NoSQL Redis
Redis数据结构之——跳表skiplist
Redis数据结构之——跳表skiplist
|
存储 NoSQL Redis
Redis从入门到精通之底层数据结构跳表 SkipList
跳表(Skip List)是一种基于链表的数据结构,用于快速地插入、删除和查找元素。跳表通过多层级的指针数组来实现快速的操作,时间复杂度为O(log n),其中n为跳表中元素的个数。Redis中的有序集合(Sorted Set)就是通过跳表来实现的。
833 8
Redis从入门到精通之底层数据结构跳表 SkipList
|
存储 机器学习/深度学习 算法
数据结构之数组、链表、跳表——算法与数据结构入门笔记(三)
数据结构之数组、链表、跳表——算法与数据结构入门笔记(三)
|
存储 NoSQL 算法
【高阶数据结构】跳表
跳表的原理及其模拟实现

热门文章

最新文章