![](https://img-blog.csdnimg.cn/direct/89c48ad78dba43048c9e8392f294e6a5.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java数据结构
文章平均质量分 82
介绍数据结构的java实现以及使用Java相关类便捷实现数据结构
Iron_Sp-man
广度学习,深度学习
展开
-
数据结构-并查集
【代码】数据结构-并查集。原创 2024-04-21 20:44:55 · 327 阅读 · 0 评论 -
数据结构-前缀树
前缀树的时间复杂度分析。原创 2024-04-21 20:43:30 · 880 阅读 · 0 评论 -
数据结构-KMP算法
在进行字符串匹配的过程中,当模式串与主串在某个位置发生失配时,KMP算法意识到已有的部分匹配并没有被完全浪费。这是因为,从模式串的起始位置到失配点,有一段子串已经在主串中成功匹配。对于ABABC这个子串,前缀集合{A,AB,ABA,ABAB},后缀集合{C,BC,ABC,BABC}对于ABAB这个子串,前缀集合{A,AB,ABA}后缀集合{B,AB,BAB}对于ABA这个子串,前缀集合{A,AB}后缀集合{A,BA}对AB这个子串,前缀集合{A},后缀集合{B}对A这个子串,前缀集合,后缀集合都为空。原创 2024-04-21 20:42:34 · 783 阅读 · 0 评论 -
数据结构-回溯算法
3.回溯算法的时间复杂度分析。1.理解回溯算法的思想。5.回溯算法的适用条件。原创 2024-04-20 17:05:10 · 806 阅读 · 0 评论 -
数据结构-枚举算法
理解枚举思想枚举框架枚举算法的适用条件枚举的优化典型枚举问题。原创 2024-04-21 20:40:30 · 827 阅读 · 0 评论 -
数据结构-动态规划策略
2.算法实现过程(状态与状态转移方程)5.动态规划的时间复杂度分析。4.动态规划的适用条件。1.理解动态规划思想。3.动态规划实现方式。6.典型动态规划问题。原创 2024-04-19 17:47:43 · 650 阅读 · 0 评论 -
数据结构-分治策略(分治算法)
由于分治算法通常包含问题分解、递归求解子问题以及合并子问题解三个主要步骤,因此时间复杂度分析也围绕这三个方面展开。6.分治算法的时间复杂度分析。1.分治算法的核心思想。5.分治算法的适用条件。4.递归与分治的关系。原创 2024-04-18 23:18:02 · 671 阅读 · 0 评论 -
数据结构-贪心策略(贪心算法)
2.贪心选择的性质(判断一个问题是否适合用贪心算法)1.贪心算法的核心思想。原创 2024-04-18 21:00:06 · 746 阅读 · 1 评论 -
数据结构-排序
排序的基本概念:排序是指将一组数据重新排列顺序,通常按照某个特定的顺序进行排列。排序在计算机科学中是非常基础和重要的操作,被广泛应用于各种数据处理和算法中。其中排序包括内部排序和外部排序,内部排序是排序过程中,必须放在内存中的排序,外部排序是指在排序过程中无法全部放在内存中,必须在内存和外存之间移动的排序插入排序:基本思想是每次将一个待排序的记录按其关键字大小插入到前面待排序的子序列中.直接插入排序:直接插入排序(Straight Insertion Sort)是一种简单直观的排序算法,其工作原理是原创 2024-04-18 18:35:04 · 386 阅读 · 0 评论 -
数据结构-查找
分块查找(索引顺序查找):分块查找(也称为索引查找)是一种在有序数组中进行查找的算法。在进行查找时,首先通过索引找到目标值可能所在的块,然后在对应的块中进行顺序查找。顺序查找(线性查找):顺序查找(Sequential Search)是一种简单的查找方法,它从列表的第一个元素开始,逐个比较元素与目标值的大小,直到找到目标值或遍历整个列表。查找的概念:根据数据存储的方式,查找操作可以分为两种主要类型:静态查找(Static Search)和动态查找(Dynamic Search)。原创 2024-04-21 20:47:40 · 547 阅读 · 0 评论 -
数据结构-图
【代码】数据结构-图。原创 2024-04-16 11:05:30 · 419 阅读 · 0 评论 -
数据结构-树
在这种算法中,我们会从根节点开始,沿着一条路径尽可能深入,直到达到某个叶节点或目标节点,然后回溯,沿着另一条路径深入,直到遍历完所有节点。树的每个节点代表一个元素,每个节点都包含一个值以及一个指向子节点的列表。根节点没有父节点,叶子节点没有子节点。B+树是一种改进的B树,它的所有键值都存储在叶子节点,并且所有的叶子节点通过指针连接成一个有序链表。二叉树的顺序存储是指使用数组来表示二叉树,其中数组的每个元素存储二叉树中的一个节点。二叉树的链式存储是指使用链表来表示二叉树,其中每个节点存储二叉树中的一个节点。原创 2024-04-15 03:04:06 · 770 阅读 · 0 评论 -
数据结构-队列
定义:队列是一种特殊的线性数据结构,它的特点是先进先出(FIFO,First In First Out)。循环队列的实现定义:循环队列是一种线性数据结构,其操作表现基于FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。数组实现static class QueueArray{ private int maxSize;//定义数组最大容量 private int front;//定义队列头 private int rear;//定义队列尾原创 2024-04-12 02:41:13 · 548 阅读 · 0 评论 -
数据结构-栈
当在 ArrayList 的头部插入或删除元素时,需要将数组中的所有元素向后移动一个位置,这样的时间复杂度是 O(n),其中 n 是数组中的元素个数。相比之下,ArrayDeque 是通过循环数组实现的,可以在头部和尾部进行高效的插入和删除操作,时间复杂度是 O(1)。Vector是一个同步的容器,所有的方法都实现了同步,这意味着它可以在多线程环境下安全地访问。Vector是同步的,它的所有方法都是同步的,因此在多线程环境下可以安全地使用。在多线程环境下,如果需要使用同步的容器,可以选择使用Vector;原创 2024-04-12 02:40:17 · 518 阅读 · 1 评论 -
数据结构-双向链表
【代码】数据结构-双向链表。原创 2024-04-12 02:39:43 · 357 阅读 · 1 评论 -
数据结构-单链表
如果需要频繁地进行插入操作,或者需要处理空链表,带头结点的单链表可能是更好的选择。如果不希望占用额外的存储空间,或者需要简化代码,不带头结点的单链表也是一个不错的选择。在带头结点的单链表中,插入操作不需要判断当前链表是否为空,直接将新结点插入到头结点之后即可。在进行链表操作时,如果未检查链表是否为空,直接访问头结点可能会导致空指针异常。实现“插入”操作时需要判断链表是否为空,增加了一定的复杂度。初始化链表时需要单独处理头结点,增加了一定的复杂度。:增加了一个额外的结点,占用一定的存储空间。原创 2024-04-12 02:39:08 · 761 阅读 · 0 评论