当前位置:网站首页>数构(C语言)——第四章、矩阵的压缩存储(下)
数构(C语言)——第四章、矩阵的压缩存储(下)
2022-07-02 06:33:00 【七归】
个性签名:整个建筑最重要的是地基,地基不稳,地动山摇。而学技术更要扎稳基础,关注我,带你稳扎每一板块邻域的基础。
博客主页:七归的博客
专栏:数据结构(C语言版)
南来的北往的,走过路过千万别错过,错过本篇,“精彩”可能与您失之交臂 la
Triple attack(三连击):Attention,Like and Collect.
文章目录
一、矩阵的压缩存储
(一)、数组的存储结构
1、一维数组
(1)、定义:
ElemType a[MaxSize]; //ElemType型一维数组
各数组元素大小相同,且物理上连续存放
int main()
{
int a[10]={
0};
int i=0;
for(i=0;i<10;i++)
a[i]=i;
return 0;
}
数组元素a[i]的存放地址=起始地址+i*sizeof(ElemType)
2、二维数组
(1)、定义:
ElemType b[M][N]; //M行N列的二维数组
(2)、存储方式:
行优先存储或列优先存储。M行N列的二维数组b[M][N]中,
若按行优先存储,则b[i][j]的存储地址=起始地址+(iN+j)sizeof(ElemType)
若按列优先存储,则b[i][j]的存储地址=起始地址+(jM+i)sizeof(ElemType)
(二)、特殊矩阵
在数值分析中经常出现一些阶数很高的矩阵,同时在矩阵中有许多值相同的元素,或者是零元素。有时为了节省存储空间,可以对这类矩阵进行压缩存储。
压缩存储:指为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间。其目的是为了节省存储空间。
假若值相同的元素或者零元素在矩阵中是分布有一定规律,则我们称此类矩阵为特殊矩阵
1、对称矩阵
若n阶方阵中任意一个元素 a i , j a_{i,j} ai,j都有 a i , j a_{i,j} ai,j= a j , i a_{j,i} aj,i则该矩阵为对称矩阵
将对称矩阵A[1…n][1…n]存放在一维数组B[n(n+1)/2]中,B数值下标从0开始
普通存储:n*n二维数组
压缩存储策略:
(1)、下三角矩阵:
只存储主对角线(i=j)+下三角区(i>j)
若i>=j,下三角元素A[i][j]在数组中的存放位置为(i-1)*i/2+j-1
(2)、上三角矩阵:
只存储主对角线(i=j)+上三角区(i<j)
若i<j,上三角元素A[i][j]在数组中的存放位置为(j-1)*j/2+i-1
2、三角矩阵
与对称矩阵类似,不同的是存储完上(下)三角区和主对角线上的元素,还要存储对角线另一方的元素一次。
将这个上(下)三角矩阵A[1…n][1…n]压缩存储在B[n(n+1)/2+1]中。
压缩存储策略:按行优先/列优先原则将下(上)三角区元素存入一维数组中,并在最后一个位置存储常量c
(1)、下三角矩阵:除了主对角线和下三角区,其余的元素都相同
下三角矩阵中任一元素在一个数组中的下标 k 与 i、j 的对应关系为:
1、i>=j:(i-1)i/2+j-1;
2、i<j:n(n+1)/2
(2)、上三角矩阵:除了主对角线和上三角区,其余的元素都相同
上三角矩阵中任一元素在一个数组中的下标 k 与 i、j 的对应关系为:
1、i>=j:(i-1)(2n-i+2)/2+(j-i);
2、i<j:n(n+1)/2
3、三对角矩阵(又称带状矩阵)
三对角矩阵中除主对角线及主对角线上下最相邻的两条对角线上的元素外,所有元素均为0。
总共有3n-2个非零元素。当|i-j|>1时,有 a i , j a_{i,j} ai,j=0
压缩存储:按行优先(或列优先)原则,只存储带状部分
4、稀疏矩阵
非零元素个数远远少于矩阵元素的个数且分布无规律可循。
压缩存储策略:只存储非零元素
(1)、顺序存储:
三元组<行,列,值>
将非零元素及其行和列构成一个三元组(行标、列标、值)。稀疏矩阵压缩存储后就失去了随机存取的特性
//三元组的定义
struct element
{
int row,col;
ElemType item;
}
(2)、链式存储:
十字链表法
向右域right:指向同行的下一个元素
向下域down:指向同列的下一个元素
边栏推荐
- Openshift container platform community okd 4.10.0 deployment
- Linux二进制安装Oracle Database 19c
- C4D quick start tutorial - C4d mapping
- 「Redis源码系列」关于源码阅读的学习与思考
- Openshift build image
- AMQ6126问题解决思路
- [staff] time sign and note duration (full note | half note | quarter note | eighth note | sixteenth note | thirty second note)
- Function ‘ngram‘ is not defined
- QT drag event
- C# 将网页保存为图片(利用WebBrowser)
猜你喜欢
Nacos download, start and configure MySQL database
Sentinel reports failed to fetch metric connection timeout and connection rejection
C language - Blue Bridge Cup - 7 segment code
十年开发经验的程序员告诉你,你还缺少哪些核心竞争力?
CSDN Q & A_ Evaluation
What is the future value of fluorite mine of karaqin Xinbao Mining Co., Ltd. under zhongang mining?
Minecraft group service opening
队列的基本概念介绍以及典型应用示例
队列管理器running状态下无法查看通道
盘点典型错误之TypeError: X() got multiple values for argument ‘Y‘
随机推荐
Redis sorted set data type API and application scenario analysis
How to realize asynchronous programming in a synchronous way?
Illegal use of crawlers, an Internet company was terminated, the police came to the door, and 23 people were taken away
[staff] common symbols of staff (Hualian clef | treble clef | bass clef | rest | bar line)
Sentinel reports failed to fetch metric connection timeout and connection rejection
Finishing the interview essentials of secsha system!!!
gocv边界填充
Loadbalancer dynamically refreshes Nacos server
将一串数字顺序后移
[staff] the lines and spaces of the staff (the nth line and the nth space in the staff | the plus N line and the plus N space on the staff | the plus N line and the plus N space below the staff | the
Aneng logistics' share price hit a new low: the market value evaporated by nearly 10 billion yuan, and it's useless for chairman Wang Yongjun to increase his holdings
Qt——如何在QWidget中设置阴影效果
Driving test Baodian and its spokesperson Huang Bo appeared together to call for safe and civilized travel
以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
WSL installation, beautification, network agent and remote development
Minecraft install resource pack
随笔:RGB图像颜色分离(附代码)
【Go实战基础】gin 如何设置路由
Oracle 相关统计
Matplotlib剑客行——没有工具用代码也能画图的造型师