跳跃表是怎么执行查询操作的?

1 个回答

  • 松林
    入体冰凉的月光,都比不上你绝情的目光。
    Zset是基于跳跃表+字典实现的,如果只是单key查询,那么就直接从字典中查询(字典的key就是保存了元素的值,value则是元素的分值score),这样可以用O(1)的时间复杂度完成查询。如果是根据分值score进行范围查询,就是去跳跃表中查询 跳跃表的查询 跳跃表中查找元素只需要通过节点的前进指针完成。 因为每个节点有多层前进指针,首先取第一个节点的最上层的前进指针level[i],比较指针level[i]跳转到的节点的score与查找的score的大小 如果大于,那么说明要查找的score就处于当前节点与当前的level[i]跳转的节点之间,不能跳转,直接下降一级,取level[i-1]的指针进行判断。如果level[i-1]是最下面的一层,也就是单链表的指针,那么就直接向后进行遍历查找,直到找到这个score或者第一个大于这个score的值(也就是范围查找的左边界)。 如果小于,说明说明要查找的score就处于当前节点与当前的level[i]跳转的节点的后面,跳转后,取跳转后的节点进行这个判断。 [https://www.cnblogs.com/kexinxin/p/11699230.html](https://www.cnblogs.com/kexinxin/p/11699230.html) [https://blog.csdn.net/L597692583/article/details/53305044](https://blog.csdn.net/L597692583/article/details/53305044)
    发布于 2022-02-13 08:10 •IP属地 云南
    举报
    评论
    收藏