写点什么

17 | 跳表:为什么 Redis 一定要用跳表来实现有序集合

作者:鲁米
  • 2023-12-08
    北京
  • 本文字数:417 字

    阅读完需:约 1 分钟

17 | 跳表:为什么Redis一定要用跳表来实现有序集合

在今天的内容中,对于跳表的时间复杂度分析,我分析了每两个结点提取一个结点作为索引的时间复杂度。如果每三个或者五个结点提取一个结点作为上级索引,对应的在跳表中查询数据的时间复杂度是多少呢?


跳表时间复杂度分析

每两个结点提取一个结点作为上级索引

  • 跳表的高度: h = O(log_2(n))

  • 查询操作: O(log_2(n))

  • 插入操作: O(log_2(n))

  • 删除操作: O(log_2(n))

  • 高度变化趋势: 随节点数量的对数增加而增加,但增加速度逐渐减缓。

每三个结点提取一个结点作为上级索引

  • 跳表的高度: h = O(log_3(n))

  • 查询操作: O(log_3(n))

  • 插入操作: O(log_3(n))

  • 删除操作: O(log_3(n))

  • 高度变化趋势: 随节点数量的对数增加而增加,但增加速度比每两个结点提取一个结点的情况下减缓。

每五个结点提取一个结点作为上级索引

  • 跳表的高度: h = O(log_5(n))

  • 查询操作: O(log_5(n))

  • 插入操作: O(log_5(n))

  • 删除操作: O(log_5(n))

  • 高度变化趋势: 随节点数量的对数增加而增加,但增加速度比每三个结点提取一个结点的情况下减缓。

用户头像

鲁米

关注

生活黑客35 2019-06-11 加入

起点不重要,迭代很重要,就需要保持充分的开放和积累;而信息越充分,结果越可靠,又要求随时调整、不断逼近真相。

评论

发布
暂无评论
17 | 跳表:为什么Redis一定要用跳表来实现有序集合_鲁米_InfoQ写作社区