哈希和红黑树的性能,已经Java 8中集合框架性能提高的优化...
分类:
编程语言 时间:
2015-05-21 09:09:42
阅读次数:
178
红黑树的平衡红黑树首先是一棵二叉查找树,它每个结点都被标上了颜色(红色或黑色),红黑树满足以下5个性质:1、每个结点的颜色只能是红色或黑色。2、根结点是黑色的。3、每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点n的只有一个左孩子,那么n的右孩子是一个黑哨兵;如果结点n只有一个右孩子...
分类:
其他好文 时间:
2015-05-21 06:36:45
阅读次数:
141
本文的基础是红黑树 算法导论–红黑树通过在基础的数据结构中添加一些附加信息,来扩张一种标准的数据结构,然后编写新的操作来支持所需要的应用。下面是介绍在红黑树的基础上扩张的数据结构。1.动态顺序统计动态顺序统计可以在O(lgn)时间内确定任何的顺序统计量(即在n个元素的集合中,能在O(lgn)的时间内确定第i小的元素),同时也可以在O(lgn)的时间内计算一个元素的秩(即它在中序遍历下的位置顺序)...
分类:
编程语言 时间:
2015-05-20 16:26:45
阅读次数:
267
红黑树红黑树算是用的比较多,但是平时自己很少写的一种数据结构了,先看下介绍:
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
看~ 典型是用来实现关联数组,能想到什么数据结构呢?list map set这些容器的底层都是红黑树来实现的。红黑树和AVL树(平衡二叉查找树)红黑树并不是完全平衡的一棵树,所以红黑树是在平均...
分类:
其他好文 时间:
2015-05-19 20:57:02
阅读次数:
222
STL仅仅规定接口和复杂度,对于详细实现不作要求。set大多以红黑树实现,但STL在标准规格之外提供了一个所谓的hash_set,以hash table实现。hash_set的接口,hash_table都提供了,所以差点儿全部的hash_set操作都是直接调用hash_table的函数而已。除了ha...
分类:
其他好文 时间:
2015-05-17 20:14:52
阅读次数:
143
红黑树是平衡搜索树的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为Lgn。红黑树在二叉搜索树的基础上结点增加了一个属性color,值为black或者red,即一个节点的属性有:left,right,p,color,key。同时,红黑树使用一个哨兵T_NIL代替以一般搜索树中的NULL,T_NIL也是一个普通的结点,也具有以上5个属性,它的color属性为black,其他属性为任意值。即叶子结点的左右孩子全部指向哨兵,以及根节点的父指针也指向哨兵。...
分类:
编程语言 时间:
2015-05-17 10:50:12
阅读次数:
150
红黑树是一种二叉平衡树,在每一个结点增加了一个存储位表示结点的颜色,以维持它的平衡;...
分类:
其他好文 时间:
2015-05-16 16:34:16
阅读次数:
180
红黑树(Red Black Tree) 是一种自平衡二叉查找树红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,.....
分类:
其他好文 时间:
2015-05-15 22:42:39
阅读次数:
265
上篇博客主要讲述了二叉排序树的基本概念和插入删除操作,必须再次说明的是:在一棵高度为h的二叉排序树上,实现动态集合操作查询,插入和删除的运行时间均为O(h)。
可见二叉树的基本操作效率取决于树的形态,当然树的高度越低越好,显然树分布越均匀,高度越低。那么,问题来了?对于给定的关键字序列,如何构造一棵形态匀称的二叉排序树。这种匀称的二叉排序树就称为平衡二叉树。
平衡二叉树定义:平衡二叉树...
分类:
编程语言 时间:
2015-05-15 12:05:53
阅读次数:
184