news 2026/7/10 22:42:21

二叉堆,哈夫曼树和哈夫曼编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉堆,哈夫曼树和哈夫曼编码

1、堆通常分为两种类型:

  1. 大顶堆:根结点的值必须大于它孩子结点的值
  2. 小顶堆:根结点的值必须小于它孩子结点的值


结点的路径长度:从根结点到该结点的路径上的连接数
树的路径长度:树的每个叶子结点的路径长度之和
结点的带权路径长度:结点的路径长度与结点权值的乘积
树的带权路径长度(WPL):树的所有叶子结点的带权路径长度之和

2、哈夫曼树的构造过程,

森林中选出两个结点权值最小的⼆叉树,合并这两个⼆叉树,增加⼀个新的结点作为新的⼆叉树的根,权值为左右孩子的权值之和。

3、哈夫曼编码

3.1、定长编码

每个字符的编码长度是一样的,缺点是浪费空间。

3.2、变长编码

单个编码的长度不一样,出现频率越高的编码长度越短。变长编码可以将短编码赋予平均出现频率较高的字符,同⼀消息的编码长度小于定长编码。

3.3、前缀码

前缀码就是没有任何码字是其他码字的前缀。

4、哈夫曼树

特征:

  • 每片叶子结点都包含⼀个字符;从结点到其左孩子的路径上标记0;从结点到其右孩子的路径上标记1
  • 编码均具有前缀属性
  • 从根结点到包含字符的叶子结点的路径上获得的叶结点的编码

5、复杂度分析

⼀个算法的好坏,我们可以从时间和空间两个维度去衡量。执行时间越短,占⽤内
存空间越小的算法,我们认为是更优的算法。
好算法的标准:⾸先它必须能彻底解决这个问题(称为准确性),且根据其编写出的程序在任何情况下都不能崩溃(称为健壮性)。
算法的时间复杂度反映了程序执行时间随输⼊规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。

5.1、时间复杂度

⼀个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。记作T(n)=O(f(n)),称O(f(n))
为算法的渐进时间复杂度,简称时间复杂度。
常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)

5.2、空间复杂度

空间复杂度是对⼀个算法在运行过程中临时占用存储空间大小的量度。⼀个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输⼊输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 22:37:47

如何用deepseek生成word文档AI导出鸭硬核测评

如何用deepseek生成word文档AI导出鸭硬核测评痛点驱动 横向对比 数据实证 权威背书 真实体验一、痛点:当AI输出撞上文档格式的“沼泽” 在AI工程化落地的最后一公里,格式乱码与排版崩塌始终是生产级应用中最令人头疼的系统性故障。实测发现&#xff…

作者头像 李华
网站建设 2026/7/10 22:36:15

【单片机毕业设计】基于 STM32 与安卓 APP 的流量监测智能控制系统设计与实现,基于物联网的管道流量采集与远程监控系统开发(010402)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案一、核心硬件清单与选型说明二、整体硬件架构逻辑核心功能一、底层数据处理基础功能二、本地按键多模式管控核心功能三、自动防护与手动执行控制功能四、蓝牙无线传输与安卓 APP 远程交互功能技术路线项目演示关于我…

作者头像 李华
网站建设 2026/7/10 22:36:04

马路科技光学检测方案,精密测量让具身智能机器人从仿真走向落地

当一台人形机器人向你走来,你看到的是流畅的步态、精准的抓握、灵巧的手指但在工程师眼中这背后是精确量化的数值——感知是否可靠、关节转动的性能、控制是否到位、整机的步态如何、无数的算法叠加理论模型与物理现实之间存在着一道名为“制造公差”的鸿沟当具身智…

作者头像 李华