zoukankan      html  css  js  c++  java
  • 数据结构与算法简记--redis有序集合实现-跳跃表

    跳表


     

    定义

    为一个值有序的链表建立多级索引,比如每2个节点提取一个节点到上一级,我们把抽出来的那一级叫做索引或索引层。如下图所示,其中down表示down指针,指向下一级节点。以此类推,对于节点数为n的链表,大约可以建立log2n-1级索引。像这种为链表建立多级索引的数据结构就称为跳表。

    时间复杂度

    插入,查询,删除均为O(logn)

    平衡性

    插入时使用随机函数确定插入位置来保持平衡以避免复杂度退化

    通过一个随机函数,来决定将这个结点插入到哪几级索引中,比如随机函数生成了值 K,那我们就将这个结点添加到第一级到第 K 级这 K 级索引中。

    相比红黑树的优势

    红黑树和跳表的查询,插入,删除都可做到O(logn)

    redis有序集合,有按区间查询的操作,使用跳表可以直接定位到起始位置,然后顺序遍历就可,这一点比红黑树有优势。

  • 相关阅读:
    winform 与 html 交互 简单案例
    Winform窗口弹出位置控制
    c#预处理指令
    最简单的数据绑定
    Asp.Net细节性问题精萃
    AjaxUploader使用
    Log4net对文件的支持
    Log4net对数据库的支持
    Log4net使用
    Log4net介绍
  • 原文地址:https://www.cnblogs.com/wod-Y/p/12021330.html
Copyright © 2011-2022 走看看