数组和特殊矩阵
注意下标从0/1开始
1、数组
一维数组A[0…n-1]
L
O
C
(
a
i
)
=
L
O
C
(
a
0
)
+
i
∗
L
LOC(a_i)=LOC(a_0)+i*L
LOC(ai)=LOC(a0)+i∗L
二维数组:行下标[0,h_1] 列下标[0,h_2]
行优先
L
O
C
(
a
i
,
j
)
=
L
O
C
(
a
0
,
0
)
+
[
i
∗
(
h
2
+
1
)
+
j
]
∗
L
LOC(a_{i,j})=LOC(a_{0,0})+[i*(h_2+1)+j]*L
LOC(ai,j)=LOC(a0,0)+[i∗(h2+1)+j]∗L
列优先
L
O
C
(
a
i
,
j
)
=
L
O
C
(
a
0
,
0
)
+
[
j
∗
(
h
1
+
1
)
+
i
]
∗
L
LOC(a_{i,j})=LOC(a_{0,0})+[j*(h_1+1)+i]*L
LOC(ai,j)=LOC(a0,0)+[j∗(h1+1)+i]∗L
2、压缩矩阵
2.1 对称矩阵
下三角区:k=1+2+…+(i-1)+j-1
上三角区与下三角区对称,故交换ij即可得k值
2.2 三角矩阵
下三角同上,增加一个空间存储剩余常值
上三角矩阵
k=n+(n-1)+…+(n-i+2)+(j-i+1)-1
2.3 三对角矩阵
k=(i-1)*3-1+j+2-i-1=2i+j-3
i=(k+1)/3+1
j=k-2i+3