草庐IT

跳表的简单认识

图解分析对于一个单向链表来说,即使链表中存储的是有序的数据,但如果想要从中查找某个数据时,也只能从头到尾遍历链表,其时间复杂度是\(O(n)\)。为了提高链表的查询效率,使其支持类似“二分查找”的方法,对链表进行多层次扩展,这样的数据结构就是跳表。跳表对标的是平衡树,是一种提升链表插入、删除、搜索效率的数据结构。首先,跳表处理的是有序的链表,一般使用双向链表更加方便。然后,每两个结点提取一个结点到上一级,提取的这一层被称作为索引层。这时候,当想要查找19这个数字,可以先从索引层开始查找;当到达17时,发现下一个结点存储21这个数字,则可以确定,想要查找的19肯定是在17到21之间;这时候可以转

深入理解跳表及其在Redis中的应用

前言跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代平衡树的一种数据结构。本篇文章将对跳表的实现及在Redis中的应用进行学习。一.跳表的基础概念跳表,即跳跃链表(SkipList),是基于并联的链表数据结构,操作效率可以达到O(logN),对并发友好,跳表的示意图如下所示。跳表的特点,可以概括如下。•跳表是多层(level)链表结构;•跳表中的每一层都是一个有序链表,并且按照元素升序(默认)排列;•跳表中的元素会在哪一层出现是随机决定的,但是只要元素出现在了第k层,那么k

深入理解跳表及其在Redis中的应用

前言跳表可以达到和红黑树一样的时间复杂度O(logN),且实现简单,Redis中的有序集合对象的底层数据结构就使用了跳表。其作者威廉·普评价:跳跃链表是在很多应用中有可能替代平衡树的一种数据结构。本篇文章将对跳表的实现及在Redis中的应用进行学习。一.跳表的基础概念跳表,即跳跃链表(SkipList),是基于并联的链表数据结构,操作效率可以达到O(logN),对并发友好,跳表的示意图如下所示。跳表的特点,可以概括如下。•跳表是多层(level)链表结构;•跳表中的每一层都是一个有序链表,并且按照元素升序(默认)排列;•跳表中的元素会在哪一层出现是随机决定的,但是只要元素出现在了第k层,那么k
12