Java数据结构与算法
文章平均质量分 90
Java语言实现常用数据结构
彩虹海ing
这个作者很懒,什么都没留下…
展开
-
2020-12-14
这里写目录标题多路查找树之2-3查找树查找操作(图片来于第四版算法)插入操作(图片来于第四版算法)删除操作【复习二叉查找树的三种删除操作,图片来于大话数据结构】2-3查找树的性质红黑树红黑树定义 多路查找树之2-3查找树 多路查找树参考链接 对二叉树的一种改进:原有的二叉树是2-结点(一个键、两条链),而现在引入3-结点(两个键、三条链)。 定义: 一棵2-3查找树要么为空,要么由以下结点组成: (1)、2-结点的左链指向小于该结点的值;右链指向大于该结点的值。 (2)、3-结点左链指向小于该结点的值;中链原创 2021-01-31 23:24:23 · 134 阅读 · 0 评论 -
2020-11-28
堆1、堆的定义2、堆的分类3、堆的存储结构4、堆的基本操作 1、堆的定义 堆是一棵完全二叉树,并且堆中每一个节点的值都必须大于等于(或者小于等于)其子树的每个节点的值。 2、堆的分类 大顶堆:堆中任一节点的值都大于等于子树中的节点值。 小顶堆:堆中任一节点的值都小于等于子树中的节点值。 3、堆的存储结构 因为堆是一棵完全二叉树,因此使用顺序结构(数组)存储更好! 回忆前面二叉树内容 二叉树两种存储方式: 如果父节点存储在i位置上,则左子树存储在2i位置,右子树存储在2i+1位置,下标0不存放元素!原创 2020-12-03 10:39:48 · 322 阅读 · 0 评论 -
2020-11-28
散列表散列表的概念散列函数(哈希函数)二级目录三级目录 散列表的概念 散列表Hash Table:又称为哈希表/Hash表,是根据键key直接访问在内存中数据的一种数据结构。它由数组演化而来,利用了数组按下标进行随机访问的特性。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 散列函数(哈希函数) 二级目录 三级目录 ...原创 2020-11-28 21:57:30 · 422 阅读 · 0 评论 -
2020-11-25
树形结构1、二叉树的定义2、两种特殊的二叉树3、二叉树的性质4、二叉树的存储方式a、顺序存储:b、链式存储:5、二叉查找树(二叉搜索树、二叉排序树)二叉查找树删除的三种情况:a、删除节点为叶子结点时直接删除b、删除节点只有一个孩子结点c、删除节点有两个孩子结点二叉查找树的时间复杂度分析:6、平衡二叉树(AVL树、平衡二叉查找树)平衡二叉树的定义:平衡二叉树的优缺点平衡二叉树失衡的四种情况 1、二叉树的定义 二叉树(Binary Tree)是有限个节点的集合,这个集合可以是空集,也可以是一个根节点和两颗不相交原创 2020-11-27 22:15:38 · 324 阅读 · 2 评论 -
2020-11-24
递归:Recursion,在函数定义中又调用了自身。基本上所有递归问题都可以使用递推公式来表示! 1、满足递归的条件: (1)、一个问题的解能够拆分为多个子问题的解,并且子问题与该问题除了在数据规模上不同,求解思路完全相同。【递推式】 (2)、有递归出口,否则会死循环。 2、递归存在的两大问题: (1)、堆栈溢出。使用递归会借用系统栈,每次调用时进栈,直到满足递归终止条件才出栈。而系统栈(虚拟机栈)空间一般不大,当递归调用层数很深时,会有栈溢出的风险。 (2)、重复计算。【递归+记忆数组可以解决重复计算问题原创 2020-11-24 22:15:33 · 156 阅读 · 0 评论 -
2020-11-21
四、栈:一种受限的线性结构(只能在一端进行插入、删除)。 1、特点:先进后出 2、栈的实现包含:顺序栈和链栈。主要操作:入栈和出栈 1、基于数组的顺讯栈 /* * 基于数组实现的顺序栈 */ public class ArrayStack { private int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;// 栈的最大容量 private int DEFAULT_CAPACITY = 10;// 默认栈容量 private int top = -1;// 栈原创 2020-11-24 19:54:31 · 107 阅读 · 0 评论 -
2020-11-18
线性数据结构:从物理存储上分为顺序结构、链式结构。具体包含数组、链表、栈、队列四种线性结构。 一、数组:顺序存储的线性结构,它占用连续内存空间,存储相同数据类型的数据。 1、特点: 利于查找(直接通过下标查询),不利于插入、删除,时间复杂度为O(n)。 数组的定义: int a[] = new int[5];//初始化时必须定义空间大小 int a[] = new int[] {1,2,3};//直接在定义时赋值 数组的插入操作: 数组的删除操作: 2、针对数组类型,Java提供了容器类Arra原创 2020-11-21 13:59:33 · 128 阅读 · 0 评论