
数据结构
naget
Java技术微信公众号:Vegout
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
初识红黑树
小引——2-3树二叉查找树中,每个结点上有一个键和两个链接,我们称这种结点为2-结点。所以,有着两个键和三个链接的结点我们称之为3-结点。由2-结点和3-结点构成的树称为2-3树。 2-3树和上一篇说的普通二叉查找树最大的不同就是,它可以保持树的平衡,从而避免了二叉查找树的最坏情况的出现,守住了对数级别操作的底线,通过的办法就是自下向上生长。查找查找很简单,跟二叉查找树是类似的,...原创 2018-09-07 22:13:44 · 194 阅读 · 0 评论 -
二叉查找树中的插入查找和删除
上一篇文中,通过二分查找,我们实现了对数级别的查找方案,但因为使用了数组这一数据结构,插入时需要移动大量的元素,导致插入动作任然很慢。为了减少移动的元素,我们这次使用链表,为了保持二分查找的效率,我们将二者结合起来——二叉查找树。 一个二叉查找树就是一个二叉树,每个节点上包含有一个键一个值一个指向左节点的链接一个指向右节点的链接(这个图中的数字代表键,值没有显示)。而且每个结点的键都大于其左...原创 2018-09-05 17:06:10 · 10240 阅读 · 4 评论 -
无向图
概念轰炸图是由一组顶点和一组能够将两个顶点连接的边组成的x-y表示x到y的一条边一条连接一个顶点和其自身的边称为自环连接同一对顶点的两条边称为平行边含有平行边的图称为多重图某个顶点的度数即为依附于它的边的总数当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并称这条边依附于这两个顶点子图是由一幅图的所有边的一个子集(以及它们所依附的所有顶点)组成的图如果从任何一个顶点都存...原创 2018-09-15 21:34:47 · 655 阅读 · 0 评论 -
子字符串查找之KMP
这里写自定义目录标题字符串查找字符串查找模式ABABAC字符串文本ABABAABABAC当我们需要从文档中查找某个关键词时,就用到了子字符串查找技术。比如在某个数据库导出文档中想要查找所有用户的密码,想在一个学长给的word题库中查找你正在做的检测题的答案。就像上边这个表格,我们想要在字符串文本中查找模式所在位置,并返回这个位置给用户。这个功能是怎么实现的呢?...原创 2018-09-20 11:43:16 · 1748 阅读 · 0 评论 -
计数排序
计数排序和原来说过的几个排序算法有一个特别大的不同之处:它是一个不基于比较的排序算法。不管是快排,归并,还是堆排,它们都难以突破NlogN的运行时间下限,而计数排序是一个线性时间级别的排序算法。对NlogN的突破凭借的就是不基于比较对元素进行排序,当然了,它也有很大的局限性,比如它只能对整数进行排序。总之,计数排序是一种对整数进行排序非常有效的排序算法。计数排序的思想就是记录每个元素出现的次数,...原创 2018-09-26 21:59:46 · 3628 阅读 · 1 评论 -
二叉树遍历总结(先序||中序||后序||按层遍历||之字遍历&&递归||非递归)
先序遍历:8 6 5 7 10 9 11后序遍历:5 7 6 9 11 10 8中序遍历:5 6 7 8 9 10 11按层遍历:8 6 10 5 7 9 11之字遍历:8 10 6 5 7 9 11先序遍历递归 public static void printBTPerRecursion(TreeNode root){ if (root!=null){ ...原创 2018-11-06 18:45:35 · 173 阅读 · 0 评论 -
使用bitmap进行大量数据的排序、判断存在与否
使用bitmap主要是可以减少存储空间的使用,用一个bit来存储一个元素的状态。当我们需要在一亿个数中判断某个数是否存在时,我们不需要将这一亿个数同时放入内存。排序首先有一个bit数组,如果我们排序的所有元素中最大的数是一亿,那么我们就需要这个数组大小初始化为一亿零一(加上0),从0排到一亿,每一位bit就对应这个数,比如第6个bit位对应数字5的状态,如果是1表示待排序中存在5,是0,,则表...原创 2018-11-10 20:03:22 · 2949 阅读 · 0 评论