![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 86
Tyongg
我一定要进大厂,一定能成为大牛!
展开
-
图算法(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、骑士周游算法)
图算法(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、骑士周游算法)本篇博文通过学习尚硅谷韩顺平老师的《Java数据结构与算法》课程所做,在此非常感谢!!!文章目录图算法(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、骑士周游算法)普利姆算法概述应用分析克鲁斯卡尔算法概述应用分析上述两个算法的代码实现迪杰斯特拉算法概述应用代码实现弗洛伊德算法概述应用代码实现骑士周游算法概述分析代码实现普利姆算法概述普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有原创 2021-06-27 09:32:37 · 669 阅读 · 1 评论 -
算法——背包问题
算法——背包问题本篇博文通过学习尚硅谷韩老师《数据结构与算法》课程所做,在此非常感谢!文章目录算法——背包问题概念分析代码实现测试概念问题有一个背包,容量为4磅 , 现有如下物品:物品重量价值吉他(G)11500音响(S)43000电脑©32000要求达到的目标为装入的背包的总价值最大,并且重量不超出;要求装入的物品不能重复;思路分析背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最原创 2021-06-21 14:03:11 · 2568 阅读 · 0 评论 -
图——创建、表示、遍历(深度优先和广度优先)
图——创建、表示、遍历(深度优先和广度优先)本篇博文通过学习尚硅谷韩老师《Java数据结构与算法》课程所做,在此非常感谢!文章目录图——创建、表示、遍历(深度优先和广度优先)概述无向图有向图带权图图(无向)的创建和表示图的创建和邻接矩阵表示的实现图(无向)的遍历深度优先广度优先测试概述须知:图是一种数据结构,其中节点可以具有零个或多个相邻元素,两个节点之间的连接称为边,节点也可以称为顶点;图的概念顶点(vertex)边(edge)路径无向图有向图…无向图有向图带权图图原创 2021-06-20 22:38:42 · 308 阅读 · 1 评论 -
哈夫曼树和哈夫曼编码的实现和应用实例(压缩和解压)
哈夫曼树的实现和应用实例(压缩文件)哈夫曼树的基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近名词解释路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1结点的权及带权路径长度:若将树中结点赋给原创 2021-06-03 22:16:36 · 1669 阅读 · 0 评论 -
十大排序算法+图解分析(Java实现)
十大排序算法(Java实现)文章目录十大排序算法(Java实现)冒泡排序基本思想图解代码实现算法优化选择排序基本思想图解代码实现插入排序基本思想图解代码实现希尔排序基本思想图解代码实现算法优化快速排序基本思想图解代码实现归并排序基本思想图解代码实现计数排序基本思想图解代码实现算法优化桶排序基本思想图解代码实现基数排序基本思想图解代码实现堆排序基本思想图解代码实现总结冒泡排序基本思想冒泡排序:每次使用当前的数据a与当前数据的后一个数据b比较,如果a > b, 则交换;反之,不交换,第一次循环下来原创 2021-06-01 19:26:04 · 174 阅读 · 0 评论 -
线索化二叉树的创建和遍历(前序、中序、后序)
线索化二叉树的创建和遍历(前序、中序、后序)什么是线索化二叉树?首先,n个结点的二叉链表中含有n+1 公式 2n-(n-1)=n+1 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索")在遍历结果中,一个结点的前一个结点,称为前驱结点在遍历结果中,一个结点的后一个结点,称为后继结点这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分原创 2021-05-31 19:07:35 · 1321 阅读 · 2 评论 -
Java模拟哈希表并简单的使用
Java模拟哈希表并应用原创 2021-05-29 22:14:38 · 90 阅读 · 0 评论 -
递归实例——迷宫问题、八皇后问题
递归实例——迷宫问题、八皇后问题本篇博文通过尚硅谷韩顺平老师《Java数据结构与算法》课程所做,在此非常感谢!文章目录递归实例——迷宫问题、八皇后问题迷宫问题问题引入思路分析编码测试八皇后问题问题引入思路分析编码测试迷宫问题问题引入有一个迷宫,四周都是墙,求出一个小球从起点到终点的路径;思路分析我们先进行如下约定:将迷宫初始化为二维数组;当地图的(i, j)点为null,表示该点还没有探索过;当为"墙"时,表示该点为墙;当为"路"时,表示该点可以走;当为"*"时,表示该点已经探索过原创 2021-05-27 21:20:57 · 179 阅读 · 0 评论 -
数据结构与算法,栈的应用——中缀、后缀(逆波兰)、前缀(波兰)表达式的生成和使用
栈的应用——中缀、后缀(逆波兰)、前缀(波兰)表达式的生成和使用本篇博文通过一个计算器例子来认识,中缀、后缀、前缀表达式的使用和生成文章目录栈的应用——中缀、后缀(逆波兰)、前缀(波兰)表达式的生成和使用问题引入思路分析和中缀表达式的概念后缀表达式中缀如何转后缀前缀表达式中缀如何转前缀编码自定义一个栈结构中缀表达式解决计算器需求中缀转后缀和前缀后缀表达式解决计算器需求前缀表达式解决计算器需求测试类测试中缀表达式转前缀和后缀表达式的测试后缀表达式计算器的测试前缀表达式计算器的测试中缀表达式计算器的测试致读原创 2021-05-22 21:32:37 · 84 阅读 · 0 评论 -
Java——使用数组和单链表模拟栈
使用数组和单链表来模拟栈本篇博文通过B站尚硅谷《Java数据结构与算法》课程所做,在此非常感谢韩老师!文章目录使用数组和单链表来模拟栈入栈和出栈的图解使用数组模拟栈使用单链表模拟栈编写测试类测试结果基本介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。原创 2021-05-20 22:15:46 · 190 阅读 · 0 评论 -
单向环形链表——约瑟夫问题
单项环形链表——约瑟夫问题约瑟夫问题:设编号为1、2、3、…n的n个人围成一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的哪个人出列,他的下一个人又从1开始报数,数到m的那个人又出列,依次类推,直到所有人都出列为止,由此产生一个出队列的编号;分析:使用不带头结点的环形单链表的数据结构;代码直接先把所有的代码展示出来,并进行一一解读,如下代码:数据类Person的代码如下:package edu.hebeu.circle;public class Person {原创 2021-05-14 09:11:10 · 392 阅读 · 6 评论 -
Java模拟单链表
本篇博文通过Java模拟一个单向链表本篇博文通过Java模拟一个能够实现:头插、尾插、指定插入、修改、删除、打印等功能的带头节点的单向链表;文章目录本篇博文通过Java模拟一个单向链表创建数据域内的存储类User创建用于构成单向链表的节点类Node单向链表的构建和功能完善头插法尾插法在某一位置插入删除节点修改节点测试类Test的编写运行结果展示尾插法测试头插法测试按照id升序插入(指定位置插入)测试修改节点数据测试删除节点测试创建数据域内的存储类User创建用来存储在单向链表的data域内的类型Us原创 2021-05-11 23:45:11 · 258 阅读 · 0 评论 -
使用数组模拟环形队列
这篇博文用来使用数组模拟环形队列这个项目是根据B站尚硅谷韩老师的数据结构与算法课程学习总结的,在此非常感谢!队列的基本介绍:队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)思路分析使用数组模拟环形队列,一定要考虑数组的下标越界异常,如下思路分析:记头指针为front,尾指针为rear,队列容量为capacity;尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,这个在原创 2021-05-10 21:37:35 · 321 阅读 · 0 评论 -
一个实战来了解学习稀疏数组
一个实战来了解学习稀疏数组这篇博客是本人在学习了B站尚硅谷韩老师的数据结构课程后所做,在此表示感谢!文章目录一个实战来了解学习稀疏数组稀疏数组稀疏数组的基本介绍应用实例项目编写编写工具类棋盘类的编写(二维数组相关的类)保存棋盘状态类的编写(稀疏数组相关的类)测试类的编写测试稀疏数组引入需求:编写的五子棋程序中,有存盘退出和续上盘的功能,我们可以使用二维数组记录棋盘,如下:但是我们发现使用传统的二维数组,会存在大量的没有意义的无效数据,导致内存的浪费,针对如上的情况,我们可以使用稀疏数组来优化;原创 2021-05-09 22:58:09 · 88 阅读 · 0 评论