当前位置: 首页 > news >正文

【408考点之数据结构】数组和特殊矩阵的压缩存储

数组和特殊矩阵的压缩存储

在数据结构中,数组是一种基础的数据结构,用于存储相同类型的元素的集合。矩阵则是一个二维数组,常用于表示图像、图形以及数学运算中的系数。随着矩阵的广泛应用,一些特殊类型的矩阵也被引入并得到了有效的压缩存储方法。这些特殊矩阵包括稀疏矩阵、对称矩阵、三角矩阵和对角矩阵等。

一、数组

数组是连续内存空间中存储的一组相同类型的数据。它允许通过索引快速访问元素,但插入和删除操作相对复杂,因为需要移动其他元素来保持数组的连续性。

数组的特点
  1. 固定大小:数组在定义时需要指定大小,大小一旦确定就无法改变。
  2. 连续存储:数组元素在内存中是连续存储的,允许快速访问任意元素。
  3. 索引访问:通过数组的索引可以快速访问任意元素,时间复杂度为O(1)。
  4. 插入和删除操作复杂:由于数组的连续存储特性,插入和删除元素需要移动其他元素,时间复杂度为O(n)。
二、特殊矩阵

特殊矩阵是指具有某些特定结构或属性的矩阵,这些属性允许我们对它们进行有效的压缩存储,从而节省内存空间并提高计算效率。

1. 稀疏矩阵

稀疏矩阵中大部分元素为零,只有少数非零元素。为了节省空间,我们可以只存储非零元素及其位置。

稀疏矩阵的压缩存储方法
  • 三元组表:用三元组形式存储非零元素,每个三元组包含行索引、列索引和非零元素的值。例如,对于矩阵:
    0 0 3
    4 0 0
    0 5 0
    
    可以用三元组表表示为:[(0, 2, 3), (1, 0, 4), (2, 1, 5)]
  • 压缩行存储:存储每行的非零元素及其列索引,行之间用分隔符区分。例如,上述矩阵可以表示为:[3, 2, /, 4, 0, /, 5, 1]
2. 对称矩阵

对称矩阵是指矩阵关于主对角线对称,即A[i][j] == A[j][i]。由于对称矩阵的对称性,我们只需存储其一半的元素。

对称矩阵的压缩存储方法
  • 上三角压缩:只存储上三角部分(包括对角线)元素。例如,对于对称矩阵:
    1 2 3
    2 4 5
    3 5 6
    
    我们只需存储:[1, 2, 3, 4, 5, 6]
  • 下三角压缩:只存储下三角部分(包括对角线)元素。对于上述矩阵,我们可以存储:[1, 2, 3, 4, 5, 6]
3. 三角矩阵

三角矩阵包括上三角矩阵和下三角矩阵。上三角矩阵是指所有元素位于主对角线及其上方,其他元素为零;下三角矩阵是指所有元素位于主对角线及其下方,其他元素为零。

三角矩阵的压缩存储方法
  • 上三角矩阵:只存储上三角部分(包括对角线)元素。例如:
    1 2 3
    0 4 5
    0 0 6
    
    我们存储:[1, 2, 3, 4, 5, 6]
  • 下三角矩阵:只存储下三角部分(包括对角线)元素。例如:
    1 0 0
    4 5 0
    7 8 9
    
    我们存储:[1, 4, 5, 7, 8, 9]
4. 对角矩阵

对角矩阵是指主对角线以外的所有元素均为零的矩阵。例如:

1 0 0
0 2 0
0 0 3

我们只需存储主对角线上的元素:[1, 2, 3]

特殊矩阵的压缩存储总结

通过对特殊矩阵的压缩存储,我们可以显著减少内存占用,并在进行矩阵运算时提高效率。不同类型的特殊矩阵有不同的压缩方法,具体选择哪种方法取决于矩阵的具体结构和应用场景。

相关文章:

【408考点之数据结构】数组和特殊矩阵的压缩存储

数组和特殊矩阵的压缩存储 在数据结构中,数组是一种基础的数据结构,用于存储相同类型的元素的集合。矩阵则是一个二维数组,常用于表示图像、图形以及数学运算中的系数。随着矩阵的广泛应用,一些特殊类型的矩阵也被引入并得到了有…...

26、matlab多项式曲线拟合:polyfit ()函数

1、前言 在 MATLAB 中,可以使用 polyfit() 函数进行多项式曲线拟合。polyfit() 函数可以拟合一个多项式模型到给定的数据点,从而找到最符合这些数据点的多项式曲线。以下是关于 polyfit() 函数的一些基本说明和示例用法: 语法 p = polyfit(x, y, n) x 和 y 是数据点的横纵…...

VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。

官方文档地址:https://docs.vmr.us.kg/ 欢迎安装使用,分享转发,前往github star。 跨平台,支持Windows,Linux,MacOS支持多种语言和工具,省心受到lazygit的启发,拥有更友好的TUI&…...

模板初阶【C++】

文章目录 模板的作用模板的原理模板分为两大类——函数模板和类模板函数模板语法函数模板实例化模板函数的方式模板函数的类型转换既有函数模板又有已经实现的函数,会优先调用哪一个? 类模板语法模板类实例化对象模板类的模板参数可以有缺省值类模板中的…...

搭建Vue的环境

目录 # 开篇 步骤一,准备Vue 的环境 步骤二,下载Vue.js的包 步骤三,创建并打开写前端代码的文件夹 步骤四,在VSCode中引入Vue.js的包 步骤五,创建第一个vue.html Vue其他知识 Vue.config命令 # 开篇 介绍&…...

[学习笔记]-MyBatis-Plus简介

简介 Mybatis-Plus(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 简言之就是对单表的增删改查有了很好的封装。基本不用再单独写sql语句了。目前此类…...

2024.6.23 刷题总结

2024.6.23 **每日一题** 520.检测大写字母,本题是简单模拟题,考察了ASCLL码相关的知识,根据题意,本题对于字符串有三种正确的用法,所以我们分三类来讨论,先根据首字母的大小写来分类,如果首字母…...

mysql查询不同用户(操作记录)的最新一条记录

先用MAX(time) 和 group by item_id 查询出不同的item_id对应的最大时间,然后再在外面连表查询,查询 表中 item_id 和login_time 时间 相等于刚才的查询记录的记录 具体语句如下 select a.* from reyo a join (select item_id,max(login_time) as ti…...

Java中如何使用设计模式来解决编程问题?

Java中使用设计模式来解决编程问题,可以显著提高代码的可复用性、可维护性和可读性。设计模式是一套被广泛应用于软件工程的解决方案,描述了在特定上下文中面对具体问题时的可复用解决方案。以下是几种常用的设计模式及其应用场景: 单例模式…...

单机、集群和分布式

目录 1.概述 2.单机服务器 单机版的服务器的性能,设计上的瓶颈? 3.集群 解决瓶颈1: 没有解决瓶颈2: 没有解决瓶颈3: 集群的优点? 集群的缺点? 4.分布式 分布式的优点? 分…...

qt开发-10_LineEdit

QLineEdit 小部件是一个单行文本编辑器。行编辑允许用户使用一组有用的编辑函数输入和 编辑一行纯文本。包括撤消和重做、剪切和粘贴以及拖放。通过更改行编辑的 echoMode(),它 还可以用作“只写”字段,用于输入如密码等. 创建好项目后,进入 …...

福昕PDF编辑器快速去除PDF水印方法

在福昕PDF编辑器软件中打开一个带有水印的PDF文件,点击如图下所示的页面管理->水印,点击全部移除 点击 是 水印消除(注:部分类型的水印可以消除,但是有些类型的水印无法通过此方法消除)...

Cloudflare 常用操作

一、域名托管到cloudflare 登录cloudflare->添加站点->填写域名(例如阿里云)->继续选择free套餐->继续->保存cloudflare分配的DNS地址->进入阿里云域名管理->进入DNS管理/DNS修改把DNS地址修改为cloudflare分配的两个DNS->保存->回到cloudflare->…...

elementUI的table使用展开功能( type=“expand“ ),展开时合起上一次展开的内容,始终保持展开内容为一个,并且再次点击合起自身

直接上代码了没什么可讲的,主要是用到 row-key"id" :expand-row-keys"expands row-click"handleRowClick" <template><div class"ele-body"><el-card shadow"never"><!-- 数据表格 --><ele-pro-t…...

【金】?Y? python网页前端streamlit

1、如何从 Google Colab Notebook 启动 streamit参考-How to Launch Streamlit App from Google Colab Notebook !streamlit run web.py & npx localtunnel --port 8501 & curl ipv4.icanhazip.com...

数据仓库之Lambda架构

Lambda架构是一种设计大规模数据处理系统的架构模式&#xff0c;它结合了批处理和实时处理的优点&#xff0c;以应对大数据的多样性、速度和规模问题。该架构主要由三个层次组成&#xff1a;批处理层&#xff08;Batch Layer&#xff09;、速度层&#xff08;Speed Layer&#…...

Apriori 处理ALLElectronics事务数据

通过Apriori算法挖掘以下事务集合的频繁项集&#xff1a; 流程图 代码 # 导入必要的库 from itertools import combinations# 定义Apriori算法函数 def apriori(transactions, min_support, min_confidence):# 遍历数据&#xff0c;统计每个项的支持度 item_support {}for tr…...

Content Provider:深入解析Android数据共享的核心组件

在Android开发中&#xff0c;Content Provider是一个重要的组件&#xff0c;它允许应用程序之间共享数据。它扮演着“数据访问中间层”的角色&#xff0c;为不同应用程序提供了一个统一的数据访问接口。以下将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面&#x…...

069、Python 函数的递归调用

函数可以自己调用自己吗&#xff1f;&#xff1f;&#xff1f; 这就涉及函数的递归的用法了。 递归的概念&#xff1a; 函数递归是指函数在其定义中直接或间接调用自身的过程。 递归是一种强有力的编程技术&#xff0c;通常用于解决可以被分解为相同问题的子问题的情况&…...

数仓开发那些事_番外

一位神州的正式员工&#xff08;没错&#xff0c;就是之前文章中出现的实习生&#xff09;&#xff1a;一闪&#xff0c;你今年涨工资了吗&#xff1f; 一闪&#xff1a;mad&#xff0c;一年辛苦到头只涨了500米 神州员工&#xff1a;你去年绩效不是优秀吗&#xff0c;怎么就涨…...

Python 3.14 JIT性能调优进入倒计时:CPython核心组已宣布v3.15将移除--enable-jit-experimental标志,现在不掌握就永久错过

第一章&#xff1a;Python 3.14 JIT编译器的演进脉络与战略意义Python 3.14 并非官方发布的正式版本——截至 2024 年&#xff0c;CPython 最新稳定版为 3.12&#xff0c;3.13 处于预发布阶段&#xff0c;而 3.14 尚未进入开发路线图。因此&#xff0c;“Python 3.14 JIT 编译器…...

OpenClaw故障排查:百川2-13B-4bits模型接口连接问题解决

OpenClaw故障排查&#xff1a;百川2-13B-4bits模型接口连接问题解决 1. 问题背景与现象描述 上周在尝试将本地部署的百川2-13B-4bits量化模型接入OpenClaw时&#xff0c;遇到了典型的Connection refused错误。这个问题困扰了我整整两天时间&#xff0c;期间尝试了各种常见解决…...

Transformer 原理与实现(二):从代码看透 Transformer

在上一篇文章 [Transformer 原理与实现&#xff08;一&#xff09;&#xff1a;从 Attention 到编码解码机制](https://blog.csdn.net/Cha0DD/article/details/159753362) 中&#xff0c;我们从概念层面深入理解了 Transformer 的核心机制。 今天&#xff0c;我们将通过实际的…...

XCP或者CCP标定,A2L标定文件,基于map文件自动更新A2L的地址和结构体变量的地址 源...

XCP或者CCP标定&#xff0c;A2L标定文件&#xff0c;基于map文件自动更新A2L的地址和结构体变量的地址 源码基于C&#xff03;需要开发&#xff0c;编译器为VS2022搞汽车电子的兄弟应该都遇到过这样的问题——辛辛苦苦标定的A2L文件&#xff0c;程序稍微改两行代码&#xff0c;…...

数据科学家稳健统计系列第一部分:稳健的中心趋势度量以及...

原文&#xff1a;towardsdatascience.com/robust-statistics-for-data-scientists-part-1-resilient-measures-of-central-tendency-and-67e5a60b8bf1 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cf43c75d8b50af4d9c13df54abeccde8.pn…...

为什么你的C++量子模拟器总在2^10后崩溃?内存优化、张量压缩与SIMD加速三重方案揭秘

第一章&#xff1a;量子模拟器崩溃现象与2^10内存临界点的本质剖析当量子模拟器在经典硬件上运行含10个量子比特的电路时&#xff0c;常在初始化或状态演化阶段发生静默崩溃——进程异常终止、无堆栈回溯、仅返回 SIGSEGV 或 OOM Killer 日志。这一现象并非随机故障&#xff0c…...

C++ 模板元编程在性能优化中的作用

C 模板元编程在性能优化中的作用 在现代C开发中&#xff0c;性能优化始终是开发者关注的核心问题之一。而模板元编程&#xff08;Template Metaprogramming, TMP&#xff09;作为一种编译期计算技术&#xff0c;能够在程序运行前完成复杂的逻辑处理&#xff0c;从而显著提升运…...

Arduino嵌入式轻量日志库SimpleLogger设计与实践

1. 项目概述SimpleLogger 是一款专为 Arduino 平台设计的轻量级日志库&#xff0c;其核心设计哲学是“极简可用、零侵入、低资源占用”。在资源受限的微控制器&#xff08;如 ATmega328P、ESP32-S2、nRF52840 等&#xff09;上&#xff0c;传统日志框架&#xff08;如 ArduinoL…...

自动化论文生成方案:7款工具(爱毕业aibiye等)提供格式修正与LaTeX适配功能

工具快速对比排名&#xff08;前7推荐&#xff09; 工具名称 核心功能亮点 处理时间 适配平台 aibiye 学生/编辑双模式降AIGC 1分钟 知网、万方等 aicheck AI痕迹精准弱化查重一体 ~20分钟 知网、格子达、维普 askpaper AIGC率个位数优化 ~20分钟 高校检测规则通…...

10分钟零成本搭建KIMI AI免费API:个人智能助手完整指南

10分钟零成本搭建KIMI AI免费API&#xff1a;个人智能助手完整指南 【免费下载链接】kimi-free-api &#x1f680; KIMI AI 长文本大模型逆向API【特长&#xff1a;长文本解读整理】&#xff0c;支持高速流式输出、智能体对话、联网搜索、探索版、K1思考模型、长文档解读、图像…...