数据结构
文章平均质量分 67
介绍常用的数据结构
ai_xiangjuan
这个作者很懒,什么都没留下…
展开
-
自平衡树--伸展树(Splay Tree)
Splay Tree介绍BST树的插入、查询、删除的最大时间为O(n),此种情况出现在整个树伸展成只有一个分支。但是自平衡的AVL树和红-黑树的最大时间为O(logn)。 在计算机中。我们经常遇到一个问题:就是80%的访问只仅仅使用20%的数据。我们想在O(1)的时间内能访问到这20%的数据。这就是Splay Tree的主要使用场景,splay tree会把最近访问的项作为tree的跟节点,原创 2018-01-28 20:15:23 · 400 阅读 · 0 评论 -
自平衡树-AVL树
介绍AVL树是一个自平衡的二叉查找树,此树的任意左子树与右子树的高度差不会超过1。 如:下图一是一个AVL树,而图二不是AVL树。 为什么需要AVL树BST树一些基本操作像insert,search,max,min最坏的情况下需要O(n),其中n是节点个数。我们如何保证在每次插入后,对树的一些基本操作在最坏情况下保持在O(logn)的范围。这时就需要一个新的树,我们本节介绍原创 2018-01-23 22:36:38 · 785 阅读 · 0 评论 -
btree 实现
btree的使用场景在巨型数据集中,查找是一项非常耗时的操作。我们希望设计一种这样的数据结构,通过简单的4-5指向数据块的引用就能查找到巨型数据集中我们想要的数据。这时,btree就诞生了。我们以前学习的高效查找结构,如红黑树等,适用于能够存放到内存中的数据。btree主要用于对磁盘或者网络上的数据的查找。如mysql 的存储引擎myisam就是btree的实现。b-树的数据结构原创 2018-01-07 23:10:06 · 1015 阅读 · 0 评论 -
线段树--Segment Tree
数据结构的特点线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。图例说明代码实现(以求区间和为例)构原创 2018-01-03 23:06:19 · 443 阅读 · 0 评论 -
堆 算法实现
堆算法实现原理原创 2017-11-26 22:54:51 · 2090 阅读 · 0 评论