数组
是由类型相同的数据元素构成的有序集合
数组的顺序存储
二维数组a[m][n]以一维方式存储时按位置查询
首元为a[0][0]时 以行存储 LOC(i,j)=LOC(0,0)+(n*i+j)L
以列存储 LOC(i,j)=LOC(0,0)+(m*j+i)L
首元为a[1][1]时 以行存储 LOC(i,j)=LOC(1,1)+(n*(i-1)+(j-1))L
以行存储 LOC(i,j)=LOC(1,1)+(n*(j-1)+(i-1))L
特殊矩阵的压缩存储
矩阵从[0][0]开始 一维存储从[0]开始 ps:一旦前提条件更改公式就可能不适用
1)对称矩阵
转换为一维的存储空间为 n(n-1)/2
行序存储
k=i(i+1)/2+j (i>=j)
k=j(j+1)/2+i (j>i)
2)三角矩阵
转换为一维的存储空间为 n(n-1)/2+1
行序存储 存上三角
k=i(2*n+1-i)/2+j-i (i>=j)
k=n(n+1)/2 (j>i)
行序存储 存下三角
k=i(i+1)/2+j (i>=j)
k=n(n+1)/2 (j>i)
3)对角矩阵
转换为一维的存储空间为 3*n-2+1
行序存储 k=3*i-1+j-(i-1)=2*i-j