【数据结构】矩阵的压缩存储

矩阵的压缩存储

5.1 普通矩阵的存储

  • 用二维数组存储

    分为行优先和列优先:

    行优先:优先存放一行的数据。

    列优先:优先存放一列的数据。

    • 注意下标是从0还是1开始的!

5.2 对称矩阵的存储

  • 对称矩阵定义

    若n阶方阵中任意一个元素 a i , j a_{i,j} ai,j都有 a i , j = a j , i a_{i,j}=a_{j,i} ai,j=aj,i。

  • 压缩存储策略

    只存储上或下三角区和主对角线。

  • 例:按行优先 将各元素存入一维数组

    • 数组大小应为多大?

      1 + 2 + 3 + 4... + n = ( 1 + n ) ∗ n / 2 1+2+3+4...+n=(1+n)*n/2 1+2+3+4...+n=(1+n)∗n/2

    • 如何把矩阵下标转化为一维数组下标?

    • 因为矩阵对称,所以可以将上三角区域元素的i和j互换,就变成和下三角区域一样了

    i ( i − 1 ) / 2 i(i-1)/2 i(i−1)/2是第i行前1~i-1行的所有元素数量;

    j − 1 j-1 j−1是 a i , j a_{i,j} ai,j元素在第i行的前的元素数量。如图:

5.3 三角矩阵的压缩存储

  • 三角矩阵

    上三角区域或者下三角区域为一常量。

  • 存储方法

    非常量区域和对称矩阵存储方法一毛一样。

    在数组最后存储常量的值。

5.4 三对角矩阵的压缩存储

  • 三对角矩阵的定义

    当 ∣ i − j ∣ > 1 |i-j|>1 ∣i−j∣>1,有 a i , j = 0 a_{i,j}=0 ai,j=0。

  • 存储方式

    只要存储值不为0的元素就好。

    • 如何将数组下标k转换为矩阵下标i,j?

5.5 稀疏矩阵的压缩存储

  • 稀疏矩阵定义

    非零元素远少于矩阵元素个数。

  • 存储方式

    1.顺序存储

    ​ 会失去随机存储的特性。

    2.链式存储------十字链表法

相关推荐
是个西兰花5 分钟前
网络基础1
linux·网络·c++·智能路由器
wabs66636 分钟前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
Cx330❀39 分钟前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程
自动化监测Learner43 分钟前
自动化监测数据传不出廊道?大坝通信组网选型实战:RS485、光纤、4G、LoRa、北斗短报文一篇讲透
运维·网络·自动化
aodunsoft1 小时前
安全月报 | 傲盾DDoS攻击防御2026年8月简报
网络·安全·ddos
C++ 老炮儿的技术栈1 小时前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
不会就选b1 小时前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
Raas1001 小时前
MAI Gateway(魔芋企业级AI网关)对比分析:AI网关和OpenRouter区别?企业级能力差距一览
java·服务器·网络·人工智能·gateway·ai网关·mai gateway
wtblszn1 小时前
光伏封装产线智能管理平台方案
网络·物联网
青山木2 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法