
数据结构(Java)
码蚁Java
这个作者很懒,什么都没留下…
展开
-
树
一、树的概念 树是一种重要的非线性数据结构。树可以是一颗空树,它不包含任何元素(结点),也可以是一颗非空树,它至少包含一个元素(结点)。在一颗非空树中,有且仅有一个称为根的结点,其余所有结点分属于m个(m>=0)互不相交的集合,每个 集合中的结点又各自构成一颗树,它是属于整颗树的子树,整颗树的根节点是每颗子树的根节点的前驱,相反,每颗子树的根节点是整颗树的根节点的后继。每颗子树同原创 2017-11-07 16:17:48 · 281 阅读 · 0 评论 -
堆
一、堆的定义 堆分为小根堆和大根堆两种。对于一个小根堆,它是具有如下特性的一棵完全二叉树:(1)若树根结点存在左孩子,则根结点的值小于等于左孩子结点的值。(2)若树根结点存在右孩子,则根结点的值也小于等于右孩子结点的值。(3)以左、右孩子为根的子树又各是一个堆。 大根堆的定义与上述类似,只要把条件“小于等于”改为“大于等于”就可以了。由堆的定义原创 2017-11-17 22:40:46 · 1429 阅读 · 2 评论 -
查找
一、查找的基本概念 查找又称检索,是信息处理领域的一项十分重要的功能,它同人们的日常工作和生活有着密切的联系。 对于一个查找算法的时间复杂度,既可以采用数量级的形式表示,也可以采用平均查找长度来表示。平均查找长度就是在整个查找过程中需要访问元素的平均个数,即用来衡量在查找路径上需要同多少元素进行比较后才能查找成功。平均查找长度计算公式为:AS原创 2017-11-30 13:09:37 · 672 阅读 · 0 评论 -
哈夫曼树
一、基本术语1、路径和路径长度 若在一棵二叉树中存在着一个结点序列k1、k2......kj,使得ki是ki+1的双亲(12、结点的权和带权路径长度 在许多应用中,常常将树中的结点赋上一个有着某种意义的实数,称此实数为该结点的权。结点的带权路径长度规定为从树根结点到该结点之间的路径长度与该结点上权的乘积。(结点的带权路径长度=路径长度*结点的权)原创 2017-11-22 22:56:05 · 1471 阅读 · 0 评论 -
哈夫曼编码
一、定义 最简单的二进制编码方式是等长编码。例如,假定电文中只使用A、B、C、D、E、F这六种字符,若进行等长编码,则需要二进制的3位,可依次编码为000,001,010,011,100,101。若用这六个字符作为6个叶子结点,生成一棵二叉树,让该二叉树中每个分支结点的左、右分支分别用0和1编码,从树根结点到每个叶子结点的路径上所经分支的0,1编码序列应等原创 2017-11-23 13:18:36 · 9557 阅读 · 0 评论 -
平衡二叉树
一、平衡二叉树的定义 平衡二叉树简称平衡树,又称AVL树。平衡二叉树的定义是:若一棵二叉树中每个结点的左、右子树的高度至多相差1,则称此树为平衡的。把二叉树中每个结点的左子树高度减去右子树高度定义为该结点的平衡因子。因此,平衡树中每个结点的平衡因子只能是1、0或-1。图7-10(a)就是一棵平衡二叉树,图(b)和(c)分别是一棵非平衡树,每个结点上方所标数字为该结点的平衡原创 2017-11-23 22:56:07 · 835 阅读 · 0 评论 -
散列查找
一、散列的概念 散列同顺序、链接和索引一样,是又一种数据存储方法。散列存储的方法是:以数据集合中的每个元素的关键字k为自变量,通过一种函数h(k)计算出函数值,把这个值用做一块连续存储空间(即数组或文件空间)中的元素存储位置(即下标),将该元素存储到这个下标位置上。散列存储中使用的函数h(k)被称为散列函数或哈希函数,它实现关键字到存储位置(地址)的映射(或称转换),h(原创 2017-12-03 13:42:24 · 1146 阅读 · 0 评论 -
图
一、图的概念 图是一种复杂想非线性数据结构。设一个图用G表示,则图的二元组定义为G=(V ,E ),其中,V是定点集合,即V={ Vi | 0=0 },n为图G中的定点数,当n=0时则V为空集;E是V上的一个二元关系 ,即是V上定点的序偶或无序对(每个无序对(x,y)是两个对称序偶和的简写形式)的集合。对于V上的每个定点,在E中都允许有任意多个前驱和任意原创 2017-11-24 13:12:28 · 666 阅读 · 0 评论 -
图的生成树和最小生成树
一、生成树的概念 在一个任意连通图G中,如果取它的全部顶点和一部分边构成一个子图G',即:V(G')=V(G)和E(G')⊆E(G) 若同时满足边集E(G')中的所有边既能够使全部顶点连通而又不形成任何回路,则称子图G'是原图G的一棵生成树。 下面简单说明一下,在既能够连通图G中的全部n个顶点又没有形成回路的子图G'(即原创 2017-11-26 22:37:14 · 33812 阅读 · 0 评论 -
交换排序
一、交换排序 交换排序包括气泡排序和快速排序两种。1、气泡排序 气泡排序又称为冒泡排序,它也是一种简单的排序方法。它通过相邻元素之间的比较和交换使排序码较小的元素逐渐从底层移向顶层,即从下标较大的单元移向下标较小的单元,就像水底下的气泡一样逐渐向上冒。当然,随着排序码较小的元素逐渐上移,排序码较大的元素也逐渐下移。气泡排序的过...原创 2017-12-14 20:40:03 · 229 阅读 · 0 评论 -
归并排序
归并就是将两个或多个有序表合并成一个有序表的过程。若将两个有序表合并成一个有序表则称为二路归并,同理,有三路归并,四路归并等。二路归并最为简单和常用,即适用于内排序,也适用于外排序,这里只讨论二路归并。例如,有两个有序表(7,12,15,20)和(4,8,10,17),进行二路归并后得到的有序表为(4,7,8,10,12,15,17,20)。以后若没有特别说明,所述的归并均指二路归并...原创 2017-12-15 21:31:46 · 563 阅读 · 0 评论 -
jfreechart柱形图详细属性设置
/*** plot 设置***///设置网格竖线颜色plot.setDomainGridlinePaint(Color.blue);plot.setDomainGridlinesVisible(true);//设置网格横线颜色plot.setRangeGridlinePaint(Color.blue);plot.setRangeGridlinesVisible(true);/...转载 2019-07-12 09:23:22 · 479 阅读 · 0 评论 -
排序
一、插入排序 插入排序主要包括直接插入排序和希尔排序两种。希尔排序应用较少,这里不作介绍。 直接插入排序是一种简单的排序方法,它把数组a中待排序的n个元素(n<=a.length)看成一个有序表和一个无序表,开始时有序表中只包含一个元素a[0] ,无序表中包含包含n-1个元素a[1]~a[n-1],排序过程中每次从无序表中取出第一个元素,把...原创 2017-12-04 22:19:51 · 415 阅读 · 0 评论 -
关键路径
一、AOE网的概念 与上一文AOV网相对应的是AOE网,即边表示活动的网络。它与AOV网比较,更具有使用价值,通常用它表示一个工程的计划或进度。 AOE网是一个有向带权图,图中的边表示活动(子工程),边上的权表示活动的持续时间,即完成该活动所需要的时间;图中的顶点表示事件,每个事件是活动之间的转接点,即表示它的所有入边活动到此完成,所有出边活动从此开始。A原创 2017-11-29 22:52:24 · 1461 阅读 · 0 评论 -
线性表
一、线性表的定义 二、线性表与集合的区别 三、线性表的顺序存储结构和操作实现 四、有序线性表的定义和实现 五、线性表的链接存储结构和操作实现 六、有序线性表的链接存储结构和操作实现 七、线性表应用举例——多项式计算原创 2017-10-28 11:42:49 · 2939 阅读 · 0 评论 -
集合(顺序存储结构和操作实现,链接存储结构和操作实现)
一、集合的定义 集合的定义:集合是集合结构的简称,它是有同一类型的互不相同的数据元素聚集而成,元素之间不存在任何逻辑依赖关系。例如:{ a1,a2,a3,a4,a5,......an} 集合长度:数据元素的个数。二、集合存储结构和实现2.1顺序存储结构和操作实现 在一块存储空间内连续存储集合中的每个元素 定义集合接口—》实现接口类—》实现接口中的方法...原创 2017-10-17 22:31:21 · 425 阅读 · 0 评论 -
稀疏矩阵
一、稀疏矩阵的定义1、稀疏矩阵的概念 矩阵:矩阵是一个具有m行*n列的数表,共包含m*n个元素(元素),每个元素处在确定行和列的交点位置上,它与一对行号和列号唯一对应。当一个矩阵中的行数和列数相同时,即m=n时,则称为n阶矩阵或方阵。 稀疏矩阵:一般定义为其矩阵中非零元素的个数远远小于零元素的个数。2、稀疏矩阵的三元组线性表表示原创 2017-10-30 21:14:08 · 7469 阅读 · 0 评论 -
广义表
一、广义表的定义 广义表简称表,它是线性表的推广。一个广义表是n(n>=0)个元素的一个有限序列,当n=0时称为空表。在一个非空的广义表中,其元素可以是某一确定类型的对象,这种元素被称为单元素;也可以是由单元素构成的表,这种元素被称为子表或表元素。显然,广义表的定义是递归的,广义表是线性表的递归数据结构。 社ai为广义表的第i个元素,则广义表的一般表示原创 2017-11-01 14:37:58 · 9786 阅读 · 2 评论 -
二叉树
一、二叉树的定义 二叉树是指树的度数为2的有序树。它是一种最重要的树结构。二叉树的递归定义为:二叉树或者是一棵空树,或者是一棵由一个根节点和两棵互不相交的分别被称做根的左子树和右子树所组成的非空树,左子树和右子树又同样都是一棵二叉树。 在一棵二叉树中,每个结点的左子树的根结点被称为该结点的左孩子,右子树的根结点被称为该结点的右孩子原创 2017-11-07 16:37:16 · 580 阅读 · 0 评论 -
二叉搜索树
一、二叉搜索树的定义 二叉搜索树又称二叉查找树,它或者是一棵空树,或者是一棵具有如下特性的非空二叉树:(1)若它的左子树非空,则左子树上所有结点的关键字均小于根结点的关键字。(2)若它的右子树非空,则右子树上所有接单的关键字均大于根结点的关键字(特殊地,若允许树中国存在着相同的关键字元素,则此条件应改为大于等于)。(3)左、右子树本身又是一棵二叉搜索树。原创 2017-11-15 21:56:19 · 317 阅读 · 0 评论 -
树的存储结构和运算
一、树的抽象数据类型 这里所说的树是指度大于等于3的树,通常称为多元树或多叉树。 树的抽象数据类型的数据部分为一棵普通的k叉树,操作部分包括初始化树、建立树、遍历树、查找树、输出树、清除树、判空树等一些常用运算。 根据普通k叉树的抽象数据类型,给出在Java语言中对应的接口定义如下:二、 树的存储结构1、树的顺原创 2017-11-10 17:01:40 · 1705 阅读 · 0 评论 -
栈
一、栈的定义和运算1.1 栈的定义 栈又称为堆栈,它是一种运算受限的线性表,其限制是仅允许在线性表的固定一端(表尾)进行插入、删除和读取元素等运算,不允许在其他任何位置进行运算,比一般线性表运算更加简单和方便。人们把对栈进行运算的一端称为栈顶,栈顶位置元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素称为进栈,压栈或入栈,它是把新元素放到当前栈顶元素的上面原创 2017-11-02 18:01:37 · 2144 阅读 · 0 评论 -
算数表达式的计算
一、算数表达式的两种表示 在计算机中进行算数表达式的计算是通过栈来实现的。算数表达式的两种表示方法:即中缀表达式和后缀表达式。把双目运算符出现在两个操作数中间的这种习惯表示叫做算数表达式的中缀表示,这种算数表达式被称为中缀算数表达式或中缀表达式。(就是平常我们习惯的表示方式) 例如:2+5*6 中缀表达式的计算必须遵守以下三条规则:(1)原创 2017-11-04 22:13:19 · 1762 阅读 · 0 评论 -
最短路径
一、最短路径的概念 由图的概念可知,在一个图中,若从一顶点到另一顶点存在着一条路劲(这里只讨论无回路的简单路径),则称该路径长度为该路径上所经过的边的数目,它也等于该路径上的顶点数减1。二、从一个顶点到其余各顶点的最短路径三、没对顶点之间的最短路径原创 2017-11-27 22:32:13 · 15472 阅读 · 0 评论 -
递归
一、递归的定义 当求解一个问题时,若是通过求解与它具有同样解法的、相对简化的子问题而得到的,这就是递归。一个递归的求解问题必然包含终止递归的条件,当满足一定条件时就终止继续向下递归,从而使最小问题不通过递归而解决,然后再依次返回解决较大的问题,最后解决整个问题。解决递归问题的算法称为递归算法,在递归算法中需要根据递归条件直接或间接地调用算法本身,当满足终止条件时结束递归调用。当然对原创 2017-11-06 11:14:36 · 195 阅读 · 0 评论 -
队列
一、队列的定义和运算1、队列的定义 队列简称队,它也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。把进行插入的一端称作队尾,进行删除的一端称作队首。向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为离队或出队,元素离队后,其后继元素就成为队首元素。由于队列的插入和删除操作分别是在各自的一端进行,每个原创 2017-11-06 12:58:57 · 324 阅读 · 0 评论 -
关于存储数组有序无序
转:https://blog.youkuaiyun.com/weixin_33869377/article/details/864692001:集合2.关于集合选取原则3:集合的常见方法及遍历方式转载 2019-07-16 15:00:34 · 390 阅读 · 0 评论