数据结构与算法分析-Chapter5

Chapter5-数组

5.1 数组的顺序存储

5.1.1 一维数组的存储

        数组存储的首地址:BaseBaseBase,每个元素需要的存储单元:LLL,则下标为iii的元素存储在:
Loc(0,1,...,n)=Base+Map(0,1,...,n)×L Loc(0, 1, ..., n) = Base + Map(0, 1,..., n) \times L Loc(0,1,...,n)=Base+Map(0,1,...,n)×L

5.1.2 二维数组的存储

        分为两种存储方式:行序为主序和列序为主序。
        对于一个一般意义的二维数组a[c1:d1,c2:d2]a[c_1:d_1, c_2:d_2]a[c1:d1,c2:d2],设每个元素占用LLL个存储单元,Loc(c1,c2)Loc(c_1, c_2)Loc(c1,c2)是第一个元素ac1,ac2ac_1, ac_2ac1,ac2的存储位置。
1.行序为主序
        先排最右的下标,依次向左,最后排最左的下标。
在这里插入图片描述
地址的计算方法为:
Loc(i,j)=Loc(c1,c2)+[(d2−c2+1)(i−c1)+(j−c2)]∗L Loc(i, j) = Loc(c_1, c_2) + [(d_2 - c_2 + 1)(i - c_1) + (j - c_2)] *L Loc(i,j)=Loc(c1,c2)+[(d2c2+1)(ic1)+(jc2)]L
2.列序为主序
在这里插入图片描述
        先排最左的下标,依次向右,最后排最又的下标。
地址的计算方法为:
Loc(i,j)=Loc(c1,c2)+[(d1−c1+1)(j−c2)+(i−c1)]∗L Loc(i, j) = Loc(c_1, c_2) + [(d_1 - c_1 + 1)(j - c_2) + (i - c_1)] *L Loc(i,j)=Loc(c1,c2)+[(d1c1+1)(jc2)+(ic1)]L

5.1.3 三维数组及高维数组的存储

        三维数组的存储中引入了一个叫做的玩意儿。三维数组可以看为是m1m_1m1层二维数组堆叠起来的玩意儿,其中的每一个二维数组为一个页。
在这里插入图片描述

5.2 矩阵

5.2.1 特殊矩阵

1.对称矩阵
在这里插入图片描述
        不难观察得到有aij=ajia_{ij} = a_{ji}aij=aji.

在这里插入图片描述
则查找元素aija_{ij}aij时计算地址的公式为:
k=i(i−1)2+j−1,i≥j k = \frac{i(i - 1)}{2} + j - 1, i≥j k=2i(i1)+j1,ij

k=j(j−1)2=i−1,i<j k = \frac{j(j - 1)}{2} = i - 1, i <j k=2j(j1)=i1,ij
2.三角矩阵
        三角矩阵在对称矩阵的基础上更加特殊,结构为:
在这里插入图片描述
存储方式和对称矩阵的存储方式基本相同:

在这里插入图片描述
计算某一个元素aija_{ij}aij时的地址为:
k=i(i−1)2+j−1 k = \frac{i(i - 1)}{2} + j - 1 k=2i(i1)+j1
3.三对角矩阵
        这个就更加特殊了,结构为:
在这里插入图片描述
观察矩阵特征可以得到三个关系式:
主对角线:i=j 主对角线:i= j 主对角线:i=j
低对角线:i=j+1 低对角线: i = j + 1 低对角线:i=j+1
高对角线:j=i+1 高对角线:j = i + 1 高对角线:j=i+1
可以采用下面三种方式进行映射:
在这里插入图片描述
当按照行序为主序时,存储地址对应的下标为:
k=2(i−1)+(j−1),∣i−j∣<1 k = 2(i - 1) + (j - 1), |i - j|<1 k=2(i1)+(j1),ij1
当按照列序为主序时,存储地址对应的下标为:
k=2(j−1)+(i−1),∣i−j∣<1 k = 2(j - 1) + (i - 1), |i - j| < 1 k=2(j1)+(i1),ij<1

5.2.2 稀疏矩阵

1.三元组表示法
        存储的格式为:

行数列数非零元素的值
(行号)(列号)(值)

在这里插入图片描述

2.十字链表
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值