在说正题之前需要先了解几种定义:字典、压缩列表与跳跃表。 ????字典:非常常见的数据结构,key-value结构。 ????常见的实现有红黑树(stl中的map),哈希表(stl中的unordered_map)。红黑树的查...
分类:
其他好文 时间:
2015-02-13 08:08:57
阅读次数:
158
STL set能保证最坏情况下的查找和插入效率,logN。但是维护红黑树开销较大。set内的元素按照一定的逻辑顺序组织,查找、插入等操作的结果都和排序规则有关。 适合STL set的情况为: 1、集合很大,以至于O(N)远大于O(longN)。2、查找和插入的次数一样多,且需要考虑插入的效...
分类:
其他好文 时间:
2015-02-11 10:52:07
阅读次数:
153
向量(vector) 连续存储的元素列表(list) 由节点组成的双向链表,每个结点包含着一个元素双队列(deque) 连续存储的指向不同元素的指针所组成的数组集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 多...
分类:
编程语言 时间:
2015-02-11 00:24:00
阅读次数:
286
转载自http://www.cnblogs.com/yangecnu/p/3632027.html浅谈算法和数据结构: 十 平衡查找树之B树前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。维基百科对B树的定义为“在计...
分类:
编程语言 时间:
2015-02-10 10:29:24
阅读次数:
173
转载自http://www.cnblogs.com/yangecnu/p/3627386.html浅谈算法和数据结构: 九 平衡查找树之红黑树前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而...
分类:
编程语言 时间:
2015-02-09 19:51:15
阅读次数:
182
介绍还有一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas和Robert Sedgewick改成一个比較摩登的名字:红黑...
分类:
其他好文 时间:
2015-02-08 16:46:49
阅读次数:
144
本文记录常用的数据结构,介绍它们的基本结构、使用细节、常见用途和关联的常用算法。仅包含思想,不涉及具体实现。1:常用数据结构有:堆,栈,队列,链表,散列表,二叉树,红黑树。2:堆。3:栈4:队列。5:链表。6:散列表。7:二叉树。8:红黑树。
分类:
其他好文 时间:
2015-02-08 15:18:35
阅读次数:
142
背景:书上的思路很好,开始自己想的思路行不通,因为queue定义的操作太少,不可直接访问内部内容,也不可以插入。
思路:用了一个主队列,和一个队列数组。主队列里储存的是队名,每一个队名对应一个队列数组中的团体。
学习:1.用一个map来记录队员和队员的队名是十分好的方法,应为map内部是红黑树实现,查找效率是log(n)。
代码:#include
#include
#include
#inc...
分类:
其他好文 时间:
2015-02-07 17:27:45
阅读次数:
136
直接上代码:class RBTree: def __init__(self): self.nil = RBTreeNode(0) self.root = self.nilclass RBTreeNode: def __init__(self, x): ...
分类:
编程语言 时间:
2015-02-04 16:24:47
阅读次数:
422
随机构建的二叉查找树的高度期望值为O(lgn),并不代表所有的二叉查找树的高度都为O(lgn)。但是对于有些二叉查找树的变形来说,动态集合各基本操作的性能却总是很好的,如红黑树、B树、平衡二叉树(AVL树)、跳跃表(确切的说不是树,或多或少有树的结构)、treaps(树堆)等。这里我们讲解红黑树。
平衡的意思就是完成动态数据集的操作(minimum、maximum、search、p...
分类:
编程语言 时间:
2015-02-03 23:03:09
阅读次数:
293