一:数组:
-
数据结构特点:
- 结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型
- 一维数组:可以看成一个线性表
- 二维数组:可以看成数据元素是一维数组
- 三维数组:可以看成数据元素是二维数组
- 数组元素的下标一般具有固定的上界和下界
- 数组一旦被定义,他的维数和维界就不在改变
- 数组仅有存取元素和修改元素的操作
-
数组的顺序表示:
因为 计算机内存结构是一维的, 需要表示多维数组,就必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放在存储器中。一般使用顺序存储的方法表示数组。
- 行优先顺序或以行为主序存储方式:
a11,a12,a12...a1n,a21,a22,...,a2n,...,am1,am2,...,amn.//内存里面的存放顺序
计算公式:LOC(aij)=LOC(a11)+[(i-1)*n+j-1]*d
- 列优先存储或以列为主序存储方式:
a11,a21,…,am1,a12,a22,…am2,……,an1,an2,…,anm//内存里的存放顺序
计算公式:LOC(aij)=LOC(a11)+[(j-1)*m+i-1]*d
行优先顺序——先排最右的下标,从右到左,最后排最左下标。
列优先顺序——先排最左下标,从右向左,最后排最左下标。
因此,只要知道数组的基址,维数,每个维度的上下界,和数组元素所占用的单元数(字节数),就可以通过公式在时间复杂度为O(1)内找到数组元素。 可以随机存取元素。
-
压缩存储:
- 压缩存储定义
为多个值相同的非零元素只分配一个存储空间;对零元素不分配空间。
- 特殊矩阵
非零元素按照一定的规律分布
- 常见的特殊矩阵
对称矩阵:元素的值按照主对角线对称 aij=aji;
三角矩阵:上(下)三角矩阵是指矩阵的下(上)三角(不包括对角线)中的元素均为常数或零的n阶矩阵,即非零元素的分布在矩阵中呈现为三角形。
对角矩阵:对角矩阵是指所有的非零元素都集中在以主对角线为中心的带状区域中。
稀疏矩阵:设矩阵A中有s个非零元素,若s远远小于矩阵元素的总数(即s≦m×n),则称A为稀疏矩阵。
稀疏因子: e=s/(m*n) 通常认为e<=0.05时称之为稀疏矩阵 (现在也没有一个同意的标准)
- 稀疏矩阵的存储
因为非零元素的分布一般是没有规律的
所以在存储时还需要记下它所在的行和列的位置
稀疏矩阵可由表示非零元的三元组及其行列数唯一确定