什么是跳表?
跳表是一个相对于链表来说的高级动态数据结构。
在一个有序的链表当中,以一定的规则(比如说3个数字建立一个索引)建立索引,依次建立。最高的索引层只有2个索引。
时间复杂度是O(logn),十分高效。基本思想就是以空间换时间,建立索引。
在大规模软件开发中,这个额外的空间相对于数据的大小可以忽略。
如何插入?
插入跳表一个比较恶心的东西就是需要更新索引。
更新索引的方式是使用随机函数来维护平衡性。假设随机函数生成的值为k,那就把索引插入到第一层到第k层。随机函数的选择很有讲究,从概率上来讲,能够保证跳表的索引大小和数据带下平衡性,不至于性能过度退化。
补充
索引取区间,区间内遍历,空间换时间。