矩阵
由二维数组存储矩阵
1.行有先
Loc(i,j) = Loc(0,0)+[i*(h+1)+j]L
2.列有先
Loc(i,j) = Loc(0,0)+[i(h+1)+j]*L
压缩矩阵
多个相同元素只分配一个存储空间,对零元素不分配存储空间
特殊矩阵
对称矩阵
n阶方阵,a(i,j) = a(j,i),(i>=1,j<=n)
存储到数组B[n(n+1)/2]中
存储一个三角区的元素即可
下三角区
a(i,j)对应存储下标从0开始的数组B[k],即k = i(i-1)/2+j-1
上三角区
a(i,j)对应存储下标从0开始的数组B[k],即k = j(j-1)/2+i-1
三角矩阵
下三角矩阵的上三角区为同一常数,或上三角矩阵的下三角区为同一常数
存储到数组B[n(n+1)/2]中
上三角区为常数,则
a(i,j)对应存储下标从0开始的数组B[k],即k = i(i-1)/2+j-1,
上三角区存储于B[n(n+1)/2]
下三角区为常数,则
a(i,j)对应存储下标从0开始的数组B[k],即k =(2n-i+2)(i-1)/2+j-i,上三角区存储于B[n(n+1)/2]
推导过程
第一行,存储n个
第二行,存储n-1个
…
第i-1行,存储n-(i-2)
a(i,j)在第i行第(j-i+1)
对角矩阵
对角矩阵也为带状矩阵
例如,n阶方阵,|i-j|>1,a(i,j)=0
a(i,j)与B[k]之间的关系
k = 2i+j-3
i = (k+1)/3+1,j = k-2j+3
推导有点绕,不写了
稀疏矩阵
零数非常多情况,只存储非零就行了
但是不能随机存取了,只能遍历