
数据结构
qq_43193797
github:https://github.com/yanjie666
展开
-
详解KMP算法
原创地址:https://www.cnblogs.com/dusf/p/kmp.html转载:https://www.cnblogs.com/dusf/p/kmp.html转载 2019-10-25 11:05:43 · 135 阅读 · 0 评论 -
红黑树详细分析,看了都说好
红黑树简介红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在O(logN)时间内完成查找、增加、删除等操作。因此,红黑树...转载 2019-09-20 10:32:00 · 154 阅读 · 0 评论 -
java数据结构与算法之顺序表与链表深入分析
1.线性表抽象数据类型概述 首先来说明一下什么是抽象数据类型,我们都知道java在默认情况下,所有的基本数据类型(int,float,boolean等)都支持基本运算,如加减法,这是因为系统已帮我们实现了这些基本数据类型的的基本运算。而对于自定义的数据类型(如类)也需要定义相应的运算,但在实际使用这些自定义的数据类型的运算时需要自己实现相关的运算,也就是说用户自定义的数据类型的运算需要我们...转载 2019-02-12 15:47:30 · 261 阅读 · 0 评论 -
HashMap为何从头插入改为尾插入
前言 前面对于HashMap在jdk1.8中元素插入的实现原理,进行了详细分析,具体请看:HashMap之元素插入。文章发布之后,有一位朋友问了这么一个问题:"jdk1.7中采用头插入,为什么jdk1.8中改成了尾插入?"。有人说这就是java大神随性而为,没什么特殊的用处。当时因为没仔细看过1.7的源码,所以不好解答。现在特此写了本文,来对该问题进行详细的分析。静态常量源码:...转载 2019-02-01 12:48:58 · 7143 阅读 · 8 评论 -
Hashmap的结构,1.7和1.8有哪些区别
不同点:(1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置的计算方式也不一样:1. 在JDK1.7的时候是直接用hash值和需要扩容的二进制数进...转载 2019-02-01 12:11:58 · 215 阅读 · 0 评论 -
HashMap的实现原理,以及在JDK1.7和1.8的区别
1.JDK1.7 HashMap是Java中大家最常用的一个map实现类,其为键值对也就是key-value的形式。他的数据结构则是采用的位桶和链表相结合的形式完成了,即拉链法。具体如下图所示:HashMap里面存储的是静态内部类Entry的对象,这个对象其实也是一个key-value的结构。以下是Entry的源码: static class Entry<K,V...转载 2019-02-01 11:43:14 · 2172 阅读 · 0 评论 -
B树、B-树、B+树、B*树之间的关系
B树 B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说明。先介绍下二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right)...转载 2018-12-21 08:42:12 · 189 阅读 · 0 评论 -
B-树的详解之增删改查
1、B-树的介绍B-树其实就是我们平时所说的B树,除了B-树外,还有另外一种叫B+树,我们这里先介绍什么是B-树: B-树是一种平衡的多路查找树,它在文件系统中很有用(原因之前已经介绍了)。B-树的结构有如下的特点: **一棵度为m的B-树称为m阶B-树。一个结点有k个孩子时,必有k-1个关键字才能将子树中所有关键字划分 为k个子集。B-树中所有结点的孩子结点最大值称为B-树的阶,通常...转载 2018-12-20 23:44:27 · 1396 阅读 · 0 评论 -
B-树(B树)详解
具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是,B-tree就是指的B树。特此说明。1、B-树(B树)的基本概念B-树中所有结点中孩子结点个数的最大值成为B-树的阶,通常用m表示,从查找效率考虑,一般...转载 2018-12-20 17:19:19 · 1063 阅读 · 0 评论 -
平衡二叉树的左旋,右旋以及双旋转
高度平衡的搜索二叉树 一棵平衡树,或是空树,或是具有以下性质的二叉搜索树:左子树和右子树都是AVL树,且左右子树的高度之差的绝对值不超过1。 该二叉树,根结点的右子树高度为3,左子树高度为2。结点上方的数字为平衡因子,因为右子树高度比左子树高度大1,所以根结点的平衡因子为1。 一颗平衡二叉树,如果有n个结点,其高度可保持O(log2^n),平均搜索长度也可以保持在O(log2^n)...原创 2018-12-20 15:43:25 · 2421 阅读 · 0 评论