
------【Java数据结构】
文章平均质量分 85
程序员的时光
用心写好每一篇文章。
展开
-
❤️全面图解快速排序,详细图文并茂解析!❤️
写在前面:大家好,我是时光。今天给大家带来的是排序算法中的快速排序。我采用图解方式讲解,争取写透彻。话不多说,开始!思维导图:1,快速排序概念通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。主要采用分治法和挖坑填数等方法,分治法就是大问题分解成各个小问题,堆小问题求解,使得大问题得以解决。2,算法思路我们先搞清楚这个堆排序思想,先把逻辑搞清楚,不着急写代码。我们首先有一个无序数组,比方说原创 2021-08-22 14:14:08 · 32790 阅读 · 44 评论 -
图解归并排序,带你彻底了解清楚!
写在前面:大家好,我是时光。今天给大家带来的是排序算法中的归并排序,这种排序需要拆分归并。 我采用图解方式讲解,争取写透彻。话不多说,开始!思维导图:归并排序思维导图1,归并排序的概念1.1,算法介绍和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。原创 2021-07-29 18:07:41 · 19988 阅读 · 14 评论 -
全面解析ArrayList,超详细!
写在前面:小伙伴儿们,大家好!今天来学习ArrayList相关内容,作为面试必问的知识点,来深入了解一波!思维导图:1,ArrayList底层数据结构ArrayList就是动态数组,是List接口的可调整大小的数组实现;除了实现List接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组大小。它的主要底层实现是数组Object[] elementData。数组的特点大家都知道,遍历查询速度快——数组在内存是连续空间,可以根据地址+索引的方式快速获取对应位置上的元素。但是它的增删速度慢原创 2020-11-09 10:16:11 · 758 阅读 · 0 评论 -
详细理解HashMap数据结构,太齐全了!
写在前面:小伙伴儿们,大家好!今天来学习HashMap相关内容,作为面试必问的知识点,来深入了解一波!思维导图:1,HashMap集合简介HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。JDK1.8之前的HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了节解决哈希碰原创 2020-10-23 15:49:15 · 18075 阅读 · 2 评论 -
最简方式实现二叉树的非递归遍历
写在前面:上一篇文章中我们讲到了二叉树的递归遍历——三分钟快速实现二叉树的递归遍历;这不,现在就有小伙伴提出二叉树的非递归遍历的方式; 于是乎,时光也为大家聊聊如何用最简方式实现二叉树的非递归遍历;思维导图:思路分析:要实现二叉树的非递归遍历,就必须要借助栈的结构特点来实现;我们根据遍历的顺序,然后对入栈的结点进行分析遍历即可;代码实现:...原创 2020-03-15 21:25:14 · 709 阅读 · 0 评论 -
三分钟带你快速实现二叉树的递归遍历
写在前面:上一篇文章中我们聊到了队列——漫画趣解——队列相信很多小伙伴都知道了如何实现队列;那么这次,时光同样采用漫画形式,给大家聊一聊什么是二叉树,如何实现二叉树的递归遍历;思维导图:什么是树?树是一种非线性结构,有一个直接前驱,但可能有多个直接后继(1:n);树的定义具有递归性,树中还有树;树可以为空,即结节点个数为0;如图:...原创 2020-03-08 11:45:18 · 1717 阅读 · 0 评论 -
聊一聊队列
写在前面:上一篇文章中我们聊到了栈——漫画趣解什么是栈?相信很多小伙伴都理解了栈;那么这次,同样采用漫画形式,给大家聊一聊什么是队列;思维导图:什么是队列?...原创 2020-03-04 15:50:09 · 635 阅读 · 0 评论 -
什么是栈?
写在前面:栈是一种受限的线性表,在数据结构中也很常见。下面,时光采用漫画的形式来说一说这个栈。思维导图什么是栈?栈是一种受限线性表,也就是说,栈元素具有线性关系,即前驱后继关系;只不过它是 一种特殊的线性表而已;栈的特性?如图:线性表是在表尾进行插入和删除操作,而在栈中表尾是指栈顶,而不是栈底;栈的数据操作始终只在栈顶进行,即先进后出,后进先出;顺序栈和链栈...原创 2020-03-02 14:38:14 · 6561 阅读 · 0 评论 -
简单聊一下数组和链表
写在前面数组和链表是数据结构中最基础的两种结构,其他的都是由这两者转化而来;因此,掌握这两种结构至关重要!下面,时光就带大家来学习一下数组和链表;思维导图:1,什么是线性表?线性表是具有相同类型的n(>=0)个数据元素的有限序列(a0,a1,a2,…,an),ai是表项,n是表长度;那么为什么要提到线性表呢?因为数组和链表都是线性表的结构,只不过它们的存储方式不一样;根...原创 2020-02-29 11:39:36 · 976 阅读 · 0 评论 -
线性表(1)——顺序表(动态数组)
目录1. 先建立动态数组实体类DynamicArray类;2. 再建立方法类DynamicArrayDao类;3. 测试类DynamicArrayMain类;1. 先建立动态数组实体类DynamicArray类;DynamicArray:包括顺序表的数据域和顺序表的长度;还有一个动态数组的最大容量,我们设置为常量;DynamicArray:pac...原创 2019-08-26 19:16:16 · 504 阅读 · 0 评论 -
栈(3)——栈的链式存储
目录1. 基本概念;2. 设计与实现;2.1 先建立实体类LinkStackNode类和LinkStack类; 2.2 建立方法类LinkStackDao类;2.2 测试类LinkStackMain类;1. 基本概念;栈的链式存储简称链栈;2. 设计与实现;链栈是一种特殊的线性表,链栈可以通过链式线性表(单链表)来实现;...原创 2019-08-25 10:01:21 · 481 阅读 · 0 评论 -
栈(2)——栈的顺序存储
目录1. 基本概念;2. 设计与实现;2.1 建立动态数组实体类SeqStack类;2.2 再建立方法类SeqStackDao类;2.3 测试类SeqStackMain类;1. 基本概念;栈的顺序存储结构简称顺序栈,它是运算受限制的顺序表;顺序栈的存储结构: 利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素;...原创 2019-08-24 10:35:06 · 529 阅读 · 0 评论 -
栈(1)——栈的基本概念
目录1. 基本概念;2. 特性;3. 栈的基本操作;1. 基本概念;首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系;栈是一种特殊的线性表,也叫受限线性表;定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底;2. 特性;限制了这个线性表的插入和删除的位置,它始终只在栈顶进行;栈底是固定的,最先...原创 2019-08-24 10:11:21 · 1027 阅读 · 0 评论 -
线性表(2)——单链表
这一次我们用Java语言来实现单链表;C语言版本点击链接:C语言单链表目录1. 先建实体类LinkNode类和实体类LinkList类;2. 再建方法类LinkListDao类;3. 测试类LinkListMain类;1. 先建实体类LinkNode类和实体类LinkList类;LinkNode:包括链表结点的数据域和指针域;数据域是Object类型的...原创 2019-07-28 22:21:39 · 374 阅读 · 0 评论