红黑树 PK 跳跃表 (内存占用,查询性能)1500万数据查询更新1.5万 数据,时间都在100ms如下

跳跃表和红黑树都是经常使用的数据结构,两者都能实现快速查询

1、跳跃表结构

clipboard.png
从图中能够看到, 跳跃表主要由如下部分构成:git

表头(head):负责维护跳跃表的节点指针。
跳跃表节点:保存着元素值,以及多个层。
层:保存着指向其余元素的指针。高层的指针越过的元素数量大于等于低层的指针,为了提升查找的效率,程序老是从高层先开始访问,而后随着元素值范围的缩小,慢慢下降层次。
表尾:所有由 NULL 组成,表示跳跃表的末尾。github

跳跃表以空间换取时间,来实现快速查找

2、红黑树

红黑树是每一个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制通常要求之外,对于任何有效的红黑树咱们增长了以下的额外要求:数据结构

一、节点是红色或黑色。
二、根是黑色。
三、全部叶子都是黑色(叶子是NIL节点)。
四、每一个红色节点必须有两个黑色的子节点。(从每一个叶子到根的全部路径上不能有两个连续的红色节点。)
五、从任一节点到其每一个叶子的全部简单路径都包含相同数目的黑色节点。

clipboard.png

红黑树,和跳跃表性能对比

模拟实验一千五百万,id自增,从1到一千五百万,查询更新时间效率对比
clipboard.png
代码太多,不贴代码了,具体代码在github里面具体文件以下
红黑树代码 https://github.com/shanlongpa...
跳跃表代码 https://github.com/shanlongpa...性能

相关文章
相关标签/搜索