![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构
文章平均质量分 58
Java版数据结构——小白学习之路
爱写代码的臣臣
吾生有崖而知无涯,吾道以有涯随无涯
展开
-
java 归并排序
归并排序原理合并子序列代码实现声明原理 归并排序主要是采用了分治思想,所谓分治就是把问题分解成一个个的小问题然后递归求解,而治的阶段就是将分的阶段所得的答案修补在一起。合并子序列 那么治阶段的倒数第二步是怎么实现的呢?来看下面的步骤。 首先是对比俩个子序列的第一个元素,将小的放在临时的数组当中。图中是1 < 4,因此将1放入临时数组中。 再继续对比剩下的元素,图中2 < 4,因此将2放入临时数组中。 此时,3 < 4因此还是将3放入临时数组中。接下来一直执行原创 2021-08-23 14:47:54 · 84 阅读 · 0 评论 -
希尔排序 java
希尔排序原理代码实现声明原理 1)、原始数组为上图 2)、第一轮排序中,初始增量gap为数组的长度除以2,如上图,初始增量为5,将数组分为5个小组,中间间隔为5,不同的颜色代表不同小组,小组之间进行俩俩比较,将值小的放在前面。 3)、第一轮排序过后,形成上图[3,5,1,6,0,8,9,4,7,2]数组。 4)、第二轮排序,对初始增量进行缩小,缩小之后的初始增量为gap/2。本例中,初始增量为2。因此将数组分为2组,中间间隔为2。对每个小组进行排序。值小的放在前面。 5)、第原创 2021-07-19 22:23:31 · 90 阅读 · 0 评论 -
插入排序 java
插入排序原理图基本思想代码实现声明原理图基本思想 将一个待排序序列左边看出有序区,右边看成无序区,每次取无序区(右边)第一个数,在左边有序区寻找其所在的位置。 例如上图 1)17 看作有序区,其他数看作无序区,无序区第一个数字3,因为小于17,所以放在左边。 2)3、17看成有序去,其他数看作无序区,无序区第一个数字25,因为大于17,所以放在右边。 …代码实现public class InsertSort { public static void main(Stri原创 2021-07-12 22:29:40 · 66 阅读 · 0 评论 -
选择排序 java
选择排序原理图基本思想代码实现声明原理图基本思想 1)第一次从arr[0]~arr[n - 1]中选择一个最小的数与arr[0]进行交换。 2)第二次从arr[1]~arr[n - 1]中选择一个最小的数与arr[1]进行交换。 … 3)第n - 1次,从arr[n - 2]~arr[n - 1]中选择一个最小的数与arr[n - 2]交换。原创 2021-07-11 22:32:10 · 50 阅读 · 0 评论 -
冒泡排序 java
冒泡排序原理图基本思想代码实现原理图基本思想1)数组中的数据俩俩相互比较,如果第一个元素比第二个元素大,则交换他们的位置2)第一趟交换的次数为array.length - 13)第二趟交换的次数为array.length - 2 · · ·4)第i趟交换的次数为array.length - i5)如果一趟比较下来没有进行过交换,就说明序列有序代码实现package sort排序;import java.text.SimpleDa原创 2021-06-01 20:23:57 · 84 阅读 · 0 评论 -
双向链表
双向链表双向链表的定义双向链表的优势双向链表的基础操作双向链表的插入双向链表尾部插入双向链表按编号大小进行顺序插入思路代码实现双向链表的删除思路代码实现双向链表的修改思路代码实现双向链表的遍历思路代码实现声明双向链表的定义 双向链表也可以进行首尾连接,构成双向循环链表,如下图所示双向链表的优势 1)双向链表可以向前向后查找。 2)单向链表不能自我删除,需要借助辅助结点,而双向链表可以自我删除。双向链表的基础操作双向链表的插入双向链表尾部插入public void add(HeroN原创 2021-05-16 22:04:03 · 58 阅读 · 0 评论 -
单链表
单链表基本概念单链表的基本操作单链表的增加单链表的无序增加思路代码实现单链表的有序增加思路代码实现单链表的遍历思路代码实现单链表的删除思路代码实现单链表的修改思路代码实现单链表的进阶操作返回单链表中有效节点个数,不包含头结点思路代码实现打印倒数第k个结点思路代码实现单链表的反转思路代码实现不改变单链表结构逆序输入单链表中内容思路代码实现基本概念 单链表分为带头结点和不带头节点。带头结点的单链表,头指针head指向头结点,头结点中不包含任何的信息。例如下图单链表的基本操作单链表的增加单链表的无序原创 2021-05-16 19:40:17 · 145 阅读 · 0 评论 -
队列与循环队列
队列与循环队列1.队列1.1队列的定义1.2队列的基本介绍1.3用数组模拟实现队列1.3.1数据模拟队列示意图1.3.2数组模拟队列的思路1.4代码实现队列2.循环队列2.1循环队列的定义2.2循环队列的基本介绍2.3用数组模拟实现循环队列2.3.1数组模拟循环队列的思路2.4 代码实现1.队列1.1队列的定义 队列是一种只允许在一端进行插入操作,而在另一端进行删除操作的线性表。1.2队列的基本介绍 1)队列是一个有序列表,可以通过数组和链表来实现 2)队列遵循着先进先出的原则。即:先存入原创 2021-05-14 17:22:20 · 747 阅读 · 0 评论 -
稀疏矩阵
稀疏矩阵1.稀疏矩阵的基本介绍2.稀疏矩阵的处理方法2.1实例3.二维数组转矩阵的思路3.1代码实现4.稀疏矩阵转二维数组思路5.总结6.声明1.稀疏矩阵的基本介绍 当一个数组内部大部分的数据都是0或者是同一个数值的时候,我们可以采用稀疏矩阵来存储该数组2.稀疏矩阵的处理方法 (1) 首先要记录二维数组一共有多少行,多少列,有多少个不同的值 (2) 其次将这些数值都记录在一个较小规模的稀疏矩阵中,稀疏矩阵为int[?] [3] sparseArr。其中稀疏数组的第一行存储的是二维数组的行、列原创 2021-05-13 20:32:17 · 566 阅读 · 0 评论