1.跳跃表
    ①跳跃表(skiplist)是一种能高效实现插入、删除、查找的内存数据结构,这些操作的期望复杂度都是O(logN)。
    ②与红黑树以及其他的二分查找树相比,跳跃表的优势在于实现简单,而且在并发场景下加锁粒度更小,从而可以实现更高的并发性
    ③正因为这些优点,跳跃表广泛使用与KV数据库中,诸如Redis、HBase都把跳跃表作为一种维护有序数据集合的基础数据结构
    ④定义:

    • 跳跃表由多条分层的链表组成(设为S0,S1,S2,S3,S4,……,SN)
    • 每条链表中的元素都是有序的
    • 每条链表都有两个元素:+∞(正无穷大)和-∞(负无穷大),分别表示链表头部和尾部
    • 从上到下,上层链表元素集合是下层链表元素集合的子集,集S1是S0的子集,S2是S1的子集
    • 跳跃表的高度定义为水平链表的层数

    ⑤查找

    • 如果发现currentNode后继节点的值小于等于待查询值,则沿着这条链表向后查询,否则,切换到当前节点的下一层链表
    • 继续查询,直到找到待查询值为止(或者currentNode为空节点为止)

    ⑥插入
    ⑦复杂度分析