数据结构
曾柯
keep learning
展开
-
深入理解B树和B+树(一)B树的优点和插入删除过程
B树也就是B-树,一个m阶的B树满足以下条件: 1.每个节点最多有m个子树。 2.当有子树时,根节点至少拥有两个子树。 3.除了根节点外,每个分支节点至少拥有m/2棵子树。 4.所有叶节点都在同一层上 5.每个有k个子树的节点会存储k-1个关键码,关键码按照递增次序进行排列。 6.关键字的数量满足ceil(m/2) -1 <= n ...原创 2018-02-26 15:19:33 · 2085 阅读 · 0 评论 -
深入理解B树和B+树(二)B+树的优点
有了B树,为什么还需要B+树呢?那就要先说下B树的缺点了,人类对于性能的追求是无止境的,B树相比二叉树虽好,但还是存在以下问题: 1.每个节点中既要存索引信息,又要存其对应的数据,如果数据很大,那么当树的体量很大时,每次读到内存中的树的信息就会不太够。 2.B树遍历整个树的过程和二叉树本质上是一样的,B树相对二叉树虽然提高了磁盘IO性能,但并没有解决遍历元素效率低下...原创 2018-02-26 15:44:10 · 10639 阅读 · 2 评论 -
哈希表详解
哈希表想来学过数据结构的都不陌生,哈希表如果在哈希函数设计的好的情况下可以有O(1)的查询时间复杂度,算是典型的空间换时间的数据结构代表,先来简单回顾下哈希表的一些基本概念:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散...原创 2018-02-27 15:53:22 · 1407 阅读 · 0 评论 -
红黑树的实现
话不多说,先上代码,红黑树的c++实现见我的github:https://github.com/zk3326312/RB_Tree,下面开始介绍红黑树和它的插入删除节点的过程。 红黑树相信学习过数据结构的朋友都不太陌生,c++中的stl里的map底层实现就是红黑树,红黑树说到底就是一颗特殊的二叉树,那么它相比普通的二叉树有什么特别之处呢? 红黑树是一种近似平衡的二叉...原创 2018-02-25 01:50:39 · 223 阅读 · 0 评论