一、诞生原因

解决链表查询时耗时过长的问题。

二、基本信息

英文全称:Skip List 。

链表 + 多级索引(链表) = 跳表

三、原理说明

顾名思义,跳表的查询是在多个链表之间跳跃查询的,其路线类似于走台阶,如下图所示:

举个栗子:

某一时刻,想查询代号为 8 的节点的数据,按照常规链表查询,需要从最左侧挨个查询至最右侧,遍历次数为 8 ,时间复杂度为 O(n) 。

若添加一级索引,遍历次数为 5;若再添加二级索引,遍历次数为 4,遍历路线犹如下台阶一跳一跳的,故该结构名为跳表。

跳表实际上是典型的空间换时间的思想。

时间复杂度:跳表可以说是利用多级链表实现的二分查找,如图所示,故 时间复杂度为 O(logn) 。

参考:极客时间《数据结构与算法之美》王争

这门课真心推荐,内容很经典、栗子很形象,里面还包含了很多面试题目。真是居家旅行必备良药。

(SAW:Game Over!)

数据结构与算法 / 跳表相关推荐

  1. 数据结构与算法-2-链表的基本操作-查找

    数据结构与算法-2-链表的基本操作-查找(c语言) 本文是单链表的C语言实现方法,包括单链表的创建.插入.删除.修改.查找等基本操作. 链表结点的类型定义 /*链式存储结构的头结点*/ typedef ...

  2. 数据结构与算法-4-链表的基本操作-增

    数据结构与算法-4-链表的基本操作-增 注意:以下为顺序存储结构实现 相关的头文件 /*以下为头文件SqList.h是用于定义相关函数的头文件*/ #pragma once #define LIST_ ...

  3. 数据结构进阶篇-跳表

    大家想必都知道,数组和链表的搜索操作的时间复杂度都是O(N)的,在数据量大的时候是非常耗时的.对于数组来说,我们可以先排序,然后使用二分搜索,就能够将时间复杂度降低到O(logN),但是有序数组的插入 ...

  4. 数据结构学习——skiplist跳表

    目录 1.skiplist简介 2.skiplist核心思想 3.skiplist原理 3.1 跳表的查找 3.2 跳表的插入 3.3 跳表的删除 4.skiplist简单实现 1.skiplist简 ...

  5. 左神数据结构与算法(基础)——表、树、图、贪心、递归

    2.1 哈希表.有序表.单链表和双链表 ①哈希表的简单介绍 1>哈希表在使用层面可以理解为一种集合结构. 2>如果只有key,没有伴随数据value,可以使用HashSet结构 3> ...

  6. 数据结构与算法 | 线性表 —— 链表

    原文链接:wangwei.one/posts/java-- 链表 定义 逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构 ...

  7. 数据结构于算法—线性表

    目录 前言 线性表基本架构 顺序表 插入 删除 其他操作 链表 基本结构 插入 带头节点与不带头节点 插入尾 删除 其他 代码实现 顺序表 链表 测试与结果 总结 原创公众号:bigsai 文章收藏在 ...

  8. 高级数据结构与算法 | 跳跃表(Skip List)

    文章目录 区间查询时链表与顺序表的局限 跳表=链表+索引 跳表的原理 晋升 插入 删除 跳表的实现 跳表VS红黑树 区间查询时链表与顺序表的局限 假设有这样一个情景, 此时需要设计一个拍卖系统,对于商 ...

  9. Java版数据结构与算法——线性表

    *************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...

最新文章

  1. 牛客第七场 Sudoku Subrectangles
  2. BZOJ 1503 treap
  3. 6.windows线程切换_主动切换
  4. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  5. leetcode513. 找树左下角的值(dfs)
  6. python中max()、min()获得最大值与最小值_(Python基础教程之十)Python max()和min()–在列表或数组中查找最大值和最小值...
  7. Stamp Rally
  8. 引入 Gateway 网关,这些坑一定要学会避开!!!
  9. java中priorityqueue_详解JAVA中priorityqueue的具体使用
  10. 17.go 面向对象 interface
  11. mysql 中间表的好处_MySql 使用中间表来提高统计查询速度
  12. java 多表联合查询后的结果的结果放入list里 如何拿出来_联表查询出来的结果集合放入两个POJO中然后放入List里,然后在JSP里显示出来。高手请进……急……在线等!...
  13. 使用vcpkg安装cgal前安装yasm报错
  14. java 卡牌游戏抽奖。
  15. 计算机网络——第三章 数据链路层(详细附图)
  16. 基于百度飞桨PaddleOCR的图片文字识别
  17. 希望我这是最后一次谈SaaS
  18. vscode 删除的文件如何找回??
  19. 下血本买的!Android开发者出路在哪?先收藏了
  20. 利用js加密保护核心功能代码

热门文章

  1. IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
  2. Centos7.0-安装docker
  3. HDU1164 Eddy's research I【素因子分解】
  4. android之PackageManager简单介绍
  5. adblock拦截iframe
  6. 让193FW显示1440x900还真不容易
  7. linux shell只读变量、删除变量
  8. 解决vscode下载速度慢的方法
  9. python pip配置镜像源:douban不能下载aliyun可以下载
  10. ubuntu报错:E: 仓库 “http://ppa.launchpad.net/docky-core/ppa/ubuntu bionic Release” 没有 Release 文件