跳跃表(skiplist)最初由William Pugh发表在ACM通讯上的论文《Skip
lists: a probabilistic alternative to balanced trees》中,作者给出的定义是:跳表是在很多应用中有可能替代平衡树而作为实现方法的一种数据结构。跳跃列表的算法有同平衡树一样的渐进的预期时间边界,并且更简单、更快速和使用更少的空间。其实,跳表,顾名思义,跳跃的链表,跳表在链表的基础上增加了前向指针,对于链表而言,顺序查找的时间复杂度为线性时间,为了提高查找的效率,在有序链表的节点上增加额外的前向指针,可以通过额外的前向指针跨越链表中的若干个节点,那么到这里问题就来了,当然不是挖掘机哪家强啦。如何知道有序链表需要增加额外的前向指针,要增加多少额外的前向指针以及要跨越的节点数,在跳表的实现中,采用了随机化的技术,使得跳表的查找,插入,删除的平均时间复杂度为O(logn)