自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 赫夫曼树及其编码压缩与解码的实现

赫夫曼编码被广泛用于数据文件的压缩,压缩率一般在20%-90%之间。赫夫曼编码是可变长编码VLC的一种。给定n个权值作为n个节点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,这样的二叉树便成为最优二叉树,也被称为赫夫曼树。若赫夫曼树的排序方法不同,对应的赫夫曼编码也不同,但是wpl相同都是最小的。节点的权:将树中节点付给某一个具有某种含义的数值,这个值便被称为节点的权。赫夫曼编码解压操作是压缩操作的逆向操作,即将上述压缩后结果进行还原为。节点的带权路径长度便为从根节点到该节点之间的。

2025-12-16 21:07:59 381

原创 UML类图

摘要:UML(统一建模语言)是一种可视化建模语言,用于软件设计。类图是其重要组成部分,通过矩形表示类,包含类名、属性和方法。类之间的关系包括:关联关系(单向、双向、自关联)、聚合关系(空心菱形)、组合关系(实心菱形)、依赖关系(虚线箭头)、继承关系(空心三角实线)和实现关系(空心三角虚线)。这些关系描述了类之间的静态结构和动态交互,帮助开发者清晰地表达软件设计。

2025-12-08 13:06:40 504

原创 数据结构4(树-1)

如果二叉树的所有叶子节点都在最后一层或倒数第二层,且最后一层的叶子节点在左边连续,倒数第二层叶子节点都在右边连续,则称为完全二叉树。当要删除的节点非叶子节点时,若其下只存在一个子节点则将该子节点代替删除节点。子节点:相反子节点是当前节点的上方的节点,上方的节点称这个节点为子节点。父节点:当前节点存在下方的节点,那么这个节点便是下方节点的父节点。叶子节点:叶子节点是指当前节点的下方不存在任何子节点的节点。根节点:为图中的节点A。即当前节点的上方无任何节点的节点即根节点。若删除的节点是叶子节点,则删除该节点;

2025-10-31 17:55:29 1981

原创 常见查找算法合集

本文介绍了四种常见的查找算法:1.线性查找-直接遍历数组查找目标值;2.二分查找-针对有序数组,通过递归比较中间值实现快速查找;3.插值查找-二分查找的改进版,根据目标值自适应调整中间点;4.斐波那契查找-基于黄金分割原理的优化查找方法。每种算法都给出了实现代码,并分析了优缺点,其中二分查找还扩展了查找所有相同值的版本。这些算法适用于不同场景,如线性查找简单但效率低,二分查找要求有序但效率高,斐波那契查找适合大数据量但实现复杂。

2025-10-27 20:40:58 413

原创 常见排序算法合集

桶排序根据其思想将一个序列每次分别获取每一位上的数字进行并根据这个数字存入不同的桶中,在所有数据存放完毕后根据桶中的元素顺序再存入原序列中,并重复这个过程直至序列中最大元素的各为数字取完为止。基数排序属于分配式排序,通过键值的各个位置的值,将要排序的元素分配至某些桶中以达到排序的效果。通过对要排序的数据分割为独立的两部分,其中有一部分的所有数据都比另外一部分的所有数据都要小。选择排序是通过根据当前元素值在当前元素后的所有元素中找出最大/最小的元素,查询完成后若最小/大元素下标不等于当前元素下标则进行替换。

2025-10-22 18:34:55 686

原创 算法1(递归与回溯)

递归就是方法自己调用自己传入不同的变量,并使得代码更加简洁。回溯包含递归与回退,即如果再无法继续或无法得到最终结果是便撤销上一步的操作退回之前的操作重新选择。因此回溯与递归相比是对递归的步骤进行了保存并进行回退。如下图为一个固定的迷宫:当我们进行实现在这个迷宫中通过从起点找到终点时,我们首先需要创建迷宫,在这里我们通过二维数组实现。在确定起点终点与迷宫后再进行确定策略,策略即我们在寻找路径时要怎么做。

2025-10-16 19:16:52 564

原创 数据结构3(栈与栈综合计算器)

摘要:本文详细介绍了栈的基本概念、特点及其应用场景。栈是一种先入后出的线性表,支持在栈顶进行插入(push)和删除(pop)操作。文章阐述了数组和链表两种实现栈的方式,并提供了Java代码示例。重点讲解了栈在表达式计算中的运用,包括中缀表达式转后缀表达式的方法,以及逆波兰表达式(后缀表达式)和波兰表达式(前缀表达式)的计算原理和实现步骤。

2025-10-12 10:54:27 1598

原创 数据结构2(链表)

本文介绍了链表数据结构及其实现方式。主要内容包括:1.单链表的基本概念、内存存储方式和Java实现代码,包含节点添加、修改、删除等操作;2.单链表的翻转和逆序输出方法;3.双向链表的特点及其与单链表的区别;4.环形链表的构造和约瑟夫问题的解决方案。文章通过详细的代码示例演示了各种链表的操作实现,包括节点插入、删除、遍历等核心功能,并比较了不同链表结构的优缺点。

2025-10-04 20:48:28 1714

原创 线性结构1(稀疏数组与队列)

环形队列与它的名字一样便是在之前队列的基础上在将队首与队尾连结成了一个环形,所以此时我们通过%maxsize使rear与front在达到最大值时重置为0,使整个队列成为真正意义上的环形。稀疏数组模拟:下面我们将通过对一个棋盘中的棋子的方式进行模拟,大部分情况下我们都是将一个棋盘的所有空间为0,其余通过1,2代表双方的棋子。(先进先出即先存入队列的数据优先取出,后进入队列的数据后取出),队列是一个有序列表也可使用数组或者链表进行实现。稀疏数组中的第0行为数据包含的元素个数以及总共的行列。

2025-09-26 21:47:31 372 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除