zset之所以能够快速查询,其底层是用了跳表,本文就跳实现原理来记录一下这个问题。
跳表:
跳跃表其实就是基于链表实现的一种类似于“二分法”的算法,是一个典型的空间换时间的例子。
调表的原理就是在一个链表上添加索引链表,在索引链表上再加索引,实现数据的快速查找。
如图:
每一层是一个链表,最下面就是我们储存数据的基础链表,上面三次是基础层的一个索引。也可以理解为给链表加索引,所以其查找会比较快(O(logn))。
zset之所以能够快速查询,其底层是用了跳表,本文就跳实现原理来记录一下这个问题。
跳表:
跳跃表其实就是基于链表实现的一种类似于“二分法”的算法,是一个典型的空间换时间的例子。
调表的原理就是在一个链表上添加索引链表,在索引链表上再加索引,实现数据的快速查找。
如图:
每一层是一个链表,最下面就是我们储存数据的基础链表,上面三次是基础层的一个索引。也可以理解为给链表加索引,所以其查找会比较快(O(logn))。