【随时更新】面试所需算法数据结构计算机知识点回顾

news2024/11/18 12:22:32

操作系统LRU算法

MySQL B+树

哈夫曼编码和解码

C++ 哈夫曼编码 【介绍编码过程】
哈夫曼树编码及其图形化的实现 【使用可视化方式展现最终编码效果】
Python中使用哈夫曼算法实现文件的压缩与解压缩 【Python实现】
哈夫曼树 C语言实现 【图解如何生成】

编码过程

1. 使用二进制流,统计当前文件有哪些字符
如python代码编写所示在这里插入图片描述
在这里插入图片描述

2. 为这些字符生成哈夫曼树。规则:
下文中的w权重,即为该字符的出现次数
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);

(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;

(3)从森林中删除选取的两棵树,并将新树加入森林;

(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
在这里插入图片描述

3. 生成编码

  • 从叶子结点出发,如果该结点为父结点的左孩子,则在编码追加“0”;如果为其右孩子,则编码追加“1”,
  • 编码结束后记得把字符串倒过来。因此编码是从叶子结点从下往上的,而解码需要从根节点从上往下

在这里插入图片描述
4. 压缩
压缩的文件头需要保存哈夫曼的信息

  1. 写入文件的原名
  2. 写入节点数量
  3. 计算最大频率的字节数,并写入
  4. 写入节点和对应频率
  5. 循环写入数据,每次凑够一个字节

5. 解压

  1. 读取写入文件名
  2. 读取节点数量
  3. 读取位宽
  4. 根据节点数量和位宽,读取节点和对应频率,重构哈夫曼树
  5. 循环读取数据,按照哈夫曼编码解码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的素材管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着数字化时代的到来…

MySQL — 日志、错误日志、二进制日志、查询日志、慢查询日志

文章目录 日志一、错误日志二、二进制日志2.1 介绍2.2 格式2.3 查看二进制日志2.3.1 基于行的二进制日志格式2.3.2 基于语句的二进制日志格式 2.4 日志删除 三、 查询日志四、慢查询日志 日志 一、错误日志 ​ 错误日志是MySQL中最重要的日志之一。 ​ 记录了当MySQLd启动和…

为什么Facebook的转化率要远远低于论坛?

在数字化时代,社交媒体平台如Facebook和论坛都是企业推广和营销的重要渠道。然而,相对于论坛而言,Facebook的转化率明显较低。以下是一些解释: 1.用户意图和参与度的差异 论坛用户更具明确的意图和高度参与度。他们加入论坛是为了…

智能家居家电上应用的触摸芯片有哪些?

电容式触摸芯片,具有灵敏度高、抗干扰能力强,防水防尘、高可靠性等优点已逐步替代传统机械式按钮,广泛应用于家电、智能家居、消费电子、工控等领域。 触摸感应可以穿透绝缘材质检测人体手指带来的电荷移动,从而判断人体手指触摸…

从申请到调用:空号检测 API 使用教程

引言 在当今数字化的时代,手机号码成为了我们日常生活和商业活动中重要的联系方式之一。然而,随着电话号码的泛滥和变动性,验证手机号码的有效性变得越来越重要。 本文将深入探讨空号检测API 的背景和应用场景,介绍如何使用该 A…

STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。 开发板既有A7核&#xff…

ROS:VScode开发话题(msg)、服务(srv)、动作(action),解决 无法打开源文件

一.解决 无法打开源文件 出错原因:系统没有找到.h文件对应的路径。 在编写完msg、srv、action文件后,要进行编译(catkin_make) . 编译之后,msg、srv、action会生成相应的.h文件。 其对应的.h文件目录在devel/includ…

一款可发布236T全球影像,构建“离线版地球”的GIS产品

概述 《水经注地图服务(WeServer)》是一款可快速发布全国乃至全球海量卫星影像的地图发布服务产品,该产品完全遵循OGC相关协议标准,是一个基于若干项目成功经验总结的产品。它可以轻松发布100TB级海量卫星影像,从而使…

Poco 观察者模式(Observer Pattern) 订阅和发布某个感兴趣的通知, Observer和Notification

Poco 观察者模式(Observer Pattern) 订阅和发布某个感兴趣的通知, Observer和Notification flyfish 先写一个实例代码 #include "Poco/NotificationCenter.h" #include "Poco/Notification.h" #include "Poco/Ob…

Jetpack Hilt 框架的基本使用

什么是 Hilt? Hilt 是一个功能强大、用法简单的依赖注入框架,于 2020 年加入到 Jetpack 家族中。它是 Android 团队联系了 Dagger2 团队,一起开发出来的一个专门面向 Android 的依赖注入框架。相比于 Dagger2,Hilt 最明显的特征就…

Flutter 笔记 | Flutter 核心原理(四)绘制流程

Vsync 机制 在分析首帧渲染的过程中,可以发现Render Tree的渲染逻辑(handleDrawFrame方法)是直接执行的,但是后续每一帧的渲染都是Framework的主动调用导致的吗?实际上并非如此,也不能如此。试想一下&…

【017】C++ 指针变量详解,理解指针变量

C 指针变量详解 引言一、内存概述二、指针变量2.1、地址和指针变量的关系2.2、定义指针变量2.3、指针变量的初始化2.4、指针类型2.5、案例2.6、注意事项 三、数组元素的指针3.1、概述3.2、在使用中 [ ] 就是 *()的缩写3.3、指向同一数组的元素的两个指针变量间的关系 四、字符串…

6月销量狂欢季:测评自养号助力,引爆跨境电商销量!

随着夏季的到来,跨境电商卖家们迎来了一个极佳的销售机会。6月作为夏季的重要节点,各种活动和节日都为卖家们提供了引流和销售的良机。然而,要真正实现销量的爆发,单纯依靠传统的营销手段可能难以达到预期的效果。在这篇文章中&am…

AI+边缘,是如何加速制造转型的?

在现代工业中,提起智慧工厂、智能制造有一个经久不衰的话题,那便是IT和OT的融合。 IT(Information Technology)部门专注于处理数据,整个业务系统需要它来维持运营。而OT(Operation Technology)…

2023智源大会议程公开 |智能的物质基础专题论坛

6月9日,2023北京智源大会,将邀请这一领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、图灵奖得主Geoffrey Hinton、OpenAI创…

基于OA的采购系统和专业的招标采购管理系统区别

当前采购信息化百家争鸣,既有初级版的审批和记录电子化,也有中级版的业务全流程电子化,还有升级版的数智化创新形式(如电商平台、智能评标、供应商风险评估、专家行为画像、大数据统计分析等)。 近年来,招标…

Zotero文献在word中的引用

前提 确保你的word中有Zotero插件。如下图示: 具体操作 Step01 Zeroto中下载样式 在Zotero中添加相应的文献样式,具体如下: 打开Zotero“编辑”中的首选项,打开“引用”,从“获取更多样式”中搜寻你想要的文献样…

JAVA开发(手工处理数据库表数据的一些示例算法)

背景: 在项目开发中,有时候需要手动处理一下数据库表的数据。涉及到数据得到备份、恢复,清洗,计算,合并等操作。 举例记录一下最近对数据的一些处理过程。 1、对数据表进行数据量统计 select count(*) from table…

API接口的重要性和好处|附加淘宝api接口展示案例|商品数据采集演示

随着互联网的发展,API接口已经成为许多企业进行信息交流和数据管理的重要工具。通过API接口,企业之间能够快速、可靠地进行数据传输和信息共享,从而提高了企业的生产效率和服务质量。以下是API接口的重要性和好处的文章: 1.提高生…

Zabbix从入门到精通以及案例实操系列

1、Zabbix入门 1.1、Zabbix概述 Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和…