数据结构系列(五)-多维数组
作者:互联网
本篇介绍数据结构-多维数组
思维导图
多维数组
-
数组的顺序存储
-
按行优先顺序:将数组元素按行向量排列,第 i+1 个行向量紧接在第 i 个行向量后面。
【例】二维数组 A mn 的按行优先存储的线性序列为: a11 ,a12 ,…,a1n ,a21 ,a22,…,a2n ,……,am1 ,am2 ,…,amn
-
按列优先顺序:将数组元素按列向量排列,第 i+1 个列向量紧接在第 i 个列向量后面。
【例】二维数组 A mn 的按列优先存储的线性序列为: a11 ,a21 ,…,am1 ,a12 ,a22 ,…,am2 ,……,a1n ,a2n ,…,amn
-
-
数组元素的地址计算公式
-
LOC(aij)=LOC(a00)+(i×n+j)×d
【例】LOC(00)=100,d=2,计算a23的存储地址: LOC(a23)=100+(2*5+3)*2=126
-
三维数组的地址计算:
LOC(aijk)=LOC(000)+(i * n * p+j * p+k)*d
-
-
特殊矩阵
指的是相同值的元素或者零元素在矩阵中的分布有一定规律的矩阵。
-
对称矩阵
若n阶方阵A中的元素满足aij=aji(0≤i;j≤n-1),则称A为n的对称矩阵。 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS83LzMxLzE2YzQ3NDI0MjA0YmUxMGM?x-oss-process=image/format,png)
-
sa[k]与aij之间存在的关系
若i≥j时,k=i*(i+1)/2+j; 若i<j时,k=j*(j+1)/2+i; 因此,aij的存储地址的计算公式:LOC(aij)=LOC(sa[k])=LOC(sa[0])+k*d
-
-
三角矩阵
三角矩阵有上三角和下三角两种。下三角矩阵的主对角线上方均为常数c或者零(图1)。上三角矩阵的主对角线下方均为常数c或者零(图2)。求三角矩阵的aij一共的元素个数:i*(2*n-i+1)/2
-
sa[k]与aij之间存在的关系
若i≥j时,k=i*(i+1)/2+j; 若i<j时,k=n*(n+1)/2;
-
-
-
稀疏矩阵
通常把有s个非零元素,而s远远小于矩阵元素的总数,则把这种矩阵称为稀疏矩阵。
-
三元组表
如果将表示叙述矩阵非零元素的三元组按行优先的顺序排列,则可得到一个其结点均为三元组的线性表,则把这种线性表的顺序存储结构称为三元组表。
-
-
转置方法
-
一般的转置算法
对矩阵A中的行号和列号互换后再依次存入到矩阵B中。
-
快速转置算法
设两个向量:num和cpot num[col]表示矩阵M中第col列中的非零元素个数。 cpot[col]指M中第col列的第一个非零元在b.data中的恰当位置。 有下面两个公式: cpot[1]=1; cpot[col]=copt[col-1]+num[col-1] (col≥2)
-
标签:LOC,元素,矩阵,数组,aij,多维,数据结构,col 来源: https://blog.csdn.net/u012439736/article/details/100766382