目的: 减少不必要的存储空间
数组存储
一个数组的所有元素在内存中占用一段连续的存储空间。(L为每个数组元素所占的存储单元,int 在32位下是4)
多维数组映射:
• 按行优先
• 按列优先
特殊矩阵的压缩
特殊矩阵:
• 对称矩阵
• 上(下)三角矩阵
• 对角矩阵
- 对称矩阵
规律:ai,j = a j,i
n*n 矩阵
压缩:存在一维数组中(也可以存储上三角矩阵)
第一行: 1个元素 a1,1
第二行: 2个元素 a2,1 a2,2
。。。。。
经过压缩:最后 元素个数为 n(n+1)/2
三角矩阵
上三角:
第一行 : n个元素
第二行:n-1个元素
…
第 j 行: n-j+1个元素
进过压缩:最后元素个数为 n(n+1)/2 +1 (+1是因为要存储下三角的常量,存在最后)
三对角矩阵:
定义: 元素ai,j = 0 ( |i-j|>1)
特点:元素都集中在三条对角线上
第一行 :两个元素
第二行: 三个元素
。。。。
最后一行: 两个元素
稀疏矩阵:
用三元组存储不为0的位置(i,j)和数
存储位置的计算:
元素和下标对应关系不用死记,知道排列方式,会推就行。
注意:数组下标从0开始,看清题目给的是第k个元素还是数组下标为k 。