![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
数据结构的学习
~嘟嘟
这个作者很懒,什么都没留下…
展开
-
图的广度优先遍历以及深度优先遍历
图的广度优先以及深度优先``package Learn.Graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;/** * 图的广度优先搜索 * 广度优先搜索需要使用一个队列来保持 访问过的节点的顺序 ,以便按照这个顺序来访问 这些节点的邻接节点 * * 算法步骤: * 1.访问初始节点并将该节点标记为已访问 * 2.节点 v入队列 * 3.当队列非空的时候,继续执原创 2021-10-17 19:55:44 · 71 阅读 · 0 评论 -
Java创建图结构
使用邻接矩阵的形式创建 图import java.util.ArrayList;import java.util.Arrays;public class Demo01 { //需要 arrayList 来存储我们的顶点 private ArrayList<String> vertexList; //这里顶点的数据结构是ArrayList 使用泛型进行了数据类型的规定 private int [][]edges;//二维数组实现我们的矩阵表示 存储图的对原创 2021-10-16 22:18:03 · 633 阅读 · 0 评论 -
对二叉树进行线索化Java
线索二叉树将每个节点的前驱节点与后继节点与节点本身进行了一个连接,而我们需要进行的操作是如果节点的左节点为空 那么就让左节点 指向其前驱节点右节点为空就让其指向其后继节点 ,在这里又要注意的一点是:根据遍历次序的不同 我们有前序线索树,中序线索树,以及后续线索树。这样的话,我们就还需要进行一个操作就是对每个节点的左右节点的类型 进行标识,究竟是左子树还是前驱节点还是右子树,以及是后续节点在节点类中 我们需要添加两个标识符用于 标识区分到底下一个节点是属于左右子树,还是属于前驱节点或后继节点 int l原创 2021-09-29 16:28:21 · 93 阅读 · 0 评论 -
顺序二叉树的遍历
顺序二叉树的遍历 :顺序二叉树首先要满足的条件是:二叉树应当是一个完全二叉树几个关于完全二叉树的结论 :第n个元素的左节点为 :2n+1 右节点是 2n+2;任意一个节点的父节点是 (n-1)/2代码实现:public class ArrayBinaryTree { //数组顺序存储形成的树 int [] data; public ArrayBinaryTree(int []data){ this.data=data; }原创 2021-09-27 14:24:06 · 156 阅读 · 0 评论 -
二叉树的查找 Java
实现对二叉树的查找创建树的类public class Tree { TreeNode root; //设置跟节点 public void setRoot(TreeNode root){ this.root=root; } //获取根节点 public TreeNode getRoot(){ return root; } public void fontShow() { root.fontS原创 2021-09-27 09:26:43 · 154 阅读 · 0 评论 -
关于二叉树的遍历Java
基于前面一篇的基本二叉树的创建实现的二叉树的遍历节点类public class TreeNode { //在这个类中 创建 相应的类的节点 //节点的权 int value; //声明相对应的左节点以及右节点 TreeNode lNode; TreeNode rNode; public TreeNode(int value ){ this.value=value; } public void setlNdoe原创 2021-09-26 17:50:55 · 71 阅读 · 0 评论 -
Java基本二叉树的创建
二叉树的创建关于节点的创建public class TreeNode { //在这个类中 创建 相应的类的节点 //节点的权 int value; //声明相对应的左节点以及右节点 TreeNode lNdoe; TreeNode rNdoe; public TreeNode(int value ){ this.value=value; } public void setlNdoe(TreeNode lNd原创 2021-09-26 17:04:17 · 223 阅读 · 0 评论 -
Java交换排序之冒泡排序
冒泡排序public class Sort { //交换排序之冒泡排序 public static void main(String[] args) { int[] arr = new int[]{12, 23, 45, 63, 36, 85, 96, 2, 5, 37, 19, 45}; Sort sort = new Sort(); sort.sort(arr); sort.show(arr); }原创 2021-09-25 08:46:12 · 61 阅读 · 0 评论 -
Java 交换排序之快速排序
快速排序原理: 在我们需要进行排序的数组中挑选出一个标准数(一般是第一位 )例如:[12,56,98,6,8,1,23,89,78,96] 将12 作为首位=》 [(),56,98,6,8,1,23,89,78,96]接下来 从右向左看 遇到比12小的数字不变 遇到比12小的数字就将该数字填入到括号中 并将其位置设置为一个新的括号,为其他数字的填入做准备=》 [(1),56,98,6,8,(),23,89,78,96]然后从左边依次寻找比标准数字大的数 放入括号并形成新原创 2021-09-25 10:03:22 · 63 阅读 · 0 评论 -
双向循环链表
双向循环链表的创建public class DoubleNode { //双向链表中存在前一个节点以及下一个节点 DoubleNode pre=this; DoubleNode next=this; int data; //构造方法 初始化数据 public DoubleNode(int data){ this.data=data; } public void insert(DoubleNode node){原创 2021-09-24 15:24:08 · 50 阅读 · 0 评论 -
Java单链表
java 数据结构与算法之单链表创建一个节点类public class Node { int data; //利用 next连接下面的节点 Node next; Node(int data) { this.data = data; } public void append(Node node) { Node currentNode = this; while (true) {原创 2021-09-23 20:40:26 · 42 阅读 · 0 评论 -
Java中循环链表的创建
如何实现循环单链表的创建?public class LoopNode { //设置循环链表的条件 int data; LoopNode next=this; //构造方法,初始化数据 public LoopNode(int data){ this.data=data; } //插入一个节点作为 当前节点的下一个节点 public void after(LoopNode node){ //取出下一个节点原创 2021-09-24 15:00:45 · 588 阅读 · 0 评论 -
Java数组的二分法
java 数据结构与算法对于查找算法的两种形式:二分查找、 顺序查找二分查找public class Dichotomy1 { int[] arr=new int[]{1,2,3,4,6,7,8,12,15,16}; int start=0; int end=arr.length-1; int mid=(start+end)/2; int target=6; public void match(){ while(true){原创 2021-09-22 18:59:00 · 114 阅读 · 0 评论 -
递归实现斐波那契数列
递归实现斐波那契数列public class TestRecursive { public static void main(String[] args) { System.out.println(fei(10)); } public static int fei(int i){ if(i==1||i==2){ return 1; }else{ return fei(i-1)+f原创 2021-09-24 15:43:13 · 61 阅读 · 0 评论 -
Java插入排序
插入排序:在进行插入排序的时候,我们默认为前面的数据是有序的,只需要将后一位的数据与前面的数据进行比较,进行插入即可,额外需要我们注意的是 ,如果进行比较的前面的数据有多个,就需要我们对前面的数据进行多重的比较,进行相对应的插入。import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr=new int[]{1,25,85,45,36原创 2021-09-25 11:10:05 · 50 阅读 · 0 评论 -
Java插入排序之希尔排序
直接插入排序是将元素与前面的元素进行逐一比较来确定次序的,当我们在元素后面插入了一个比前面大部分元素都要小的元素的时候,就意味着前面的很多元素都要进行位置的变换,这样就拉低了程序运行的效率。希尔排序,依据元素数量,根据一定的间隔来确定不同的局部数组,进行直接插入排序。不仅涵盖了所有的元素,而且能够较快的实现将后面的数值较小或者较大的元素 排列到前面 从而实现排序的功能。public class ShellSort { public static void main(String[] args)原创 2021-09-25 18:31:00 · 39 阅读 · 0 评论 -
Java数据结构之栈、队列
java 线性数据结构java 数据结构之 stackpublic class Stack { private int[] elements; public Stack(){ elements=new int[0]; } //实现入栈与出栈 public void add(int value){ //栈中添加元素 int[] newArr=new int[elements.length+1]; for (i原创 2021-09-23 18:27:21 · 161 阅读 · 0 评论