【JVM】-NO.115.JVM.1 -【JDK11 HashMap详解-4-伸展树、B树】

.Style:Mac

Series:Java

Since:2018-09-10

End:2018-09-10

Total Hours:1

Degree Of Diffculty:5

Degree Of Mastery:5

Practical Level:5

Desired Goal:5

Archieve Goal:3

Gerneral Evaluation:3

Writer:kingdelee

Related Links:

http://www.cnblogs.com/kingdelee/

https://blog.csdn.net/v_july_v/article/details/6530142

 

1.

伸展树,保证从空树开始连续M次对数的操作最多话费0(M log N)的时间

基本思想:

当一个节点被访问后,它就要经过一系列的AVL树旋转,推到根上。

好处:对于访问较深的节点,重构后就变快了。

特性:不要求保留高度或平衡信息

 

 

 

 

 展开:

zig-zag:

 

zig-zig:

举例:

 

 

 

 

 

 

B树:

1.定义关键字个数,即每个节点最多能够存储的关键字数

 

B和B+树的区别在于,B+树的非叶子结点只包含导航信息,不包含实际的值,所有的叶子结点和相连的节点使用链表相连,便于区间查找和遍历。

 

B+ 树的优点在于:

  • 由于B+树在内部节点上不好含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子几点上关联的数据也具有更好的缓存命中率。
  • B+树的叶子结点都是相链的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。

 

posted @ 2018-10-08 05:05  kingdelee  阅读(124)  评论(0编辑  收藏  举报