开发者社区> 问答> 正文

如何在跳跃表中插入算法?

如何在跳跃表中插入算法?

展开
收起
令人无语的八阿哥 2021-10-22 15:38:37 387 0
来自:华章出版社
1 条回答
写回答
取消 提交回答
  • 跳跃表的插入算法要复杂一点。如下图所示。首先,需要按照上述查找流程找到待插入元素的前驱和后继;然后,按照如下随机算法生成一个高度值:

    // p是一个(0,1)之间的常数,一般取p=1/4或者1/2

    public void randomHeight(double p){

    int height = 0 ;

    while(random.nextDouble() < p) height ++ ;

    return height + 1;

    }

    最后,将待插入节点按照高度值生成一个垂直节点(这个节点的层数正好等于高度值),之后插入到跳跃表的多条链表中去。假设height=randomHeight(p),这里需要分两种情况讨论:

    如果height大于跳跃表的高度,那么跳跃表的高度被提升为height,同时需要更新头部节点和尾部节点的指针指向。

    如果height小于等于跳跃表的高度,那么需要更新待插入元素前驱和后继的指针指向。

    image.png

    资料来源:《HBase原理与实践》,文章链接:https://developer.aliyun.com/article/724670

    2021-10-22 16:00:41
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载