[
a
x
x
x
x
x
b
x
x
x
x
x
c
x
x
x
x
x
d
x
x
x
x
x
e
]
[
a
x
b
x
x
c
x
x
x
d
x
x
x
x
e
]
二维数组中
a
i
j
a_{ij}
aij在一维数组中的下标:
k
=
i
(
i
−
1
)
/
2
+
j
−
1
k=i(i-1)/2+j-1
k=i(i−1)/2+j−1
对于对称矩阵我们可以只保存下三角(包括对角线上的元素),或上三角的元素
原来需要的存储单元个数 n × n n \times n n×n 变成了 ( n ( n + 1 ) / 2 ) (n(n+1)/2) (n(n+1)/2)
对于
[
a
11
a
21
a
22
a
31
a
32
a
33
a
41
a
42
a
43
a
44
a
51
a
52
a
53
a
54
a
55
]
将
[
a
11
.
.
.
a
i
1
.
.
.
a
i
j
.
.
.
.
.
.
a
n
1
.
.
.
a
n
j
.
.
.
a
n
n
]
转化为
[
a
11
.
.
.
a
i
1
.
.
.
a
i
j
.
.
.
a
n
1
.
.
.
a
n
j
.
.
.
a
n
n
]
原矩阵中的下标
i
,
j
i,j
i,j,对应于数组中的下标
k
k
k
对于
[
a
11
a
12
a
13
a
14
a
22
a
23
a
24
a
33
a
34
a
44
]
将
[
a
11
.
.
.
a
1
j
.
.
.
a
1
n
.
.
.
.
.
.
a
i
j
.
.
.
a
i
n
.
.
.
a
n
n
]
转化为
[
a
11
.
.
.
a
1
j
.
.
.
a
1
n
.
.
.
a
i
j
.
.
.
a
i
n
.
.
.
a
n
n
]
原矩阵中的下标
i
,
j
i,j
i,j,对应于数组中的下标
k
k
k
即:
k
=
(
i
−
1
)
(
2
n
−
i
+
2
)
/
2
+
j
−
i
k=(i-1)(2n-i+2)/2+j-i
k=(i−1)(2n−i+2)/2+j−i
将矩阵
[
a
11
a
12
0
0
0
a
21
a
22
a
23
0
0
0
a
32
a
33
a
34
0
0
0
a
43
a
44
a
45
0
0
0
a
54
a
55
]
压缩为一维矩阵
[
a
11
a
12
a
21
a
22
a
23
a
32
a
33
a
34
a
43
a
44
a
45
a
54
a
55
]
原来
n
×
n
n \times n
n×n个存储单元现在只要
3
n
−
2
3n-2
3n−2个
原矩阵中的下标
i
,
j
i,j
i,j,对应于数组中的下标
k
k
k
即
k
=
2
i
+
j
−
3
k=2i+j-3
k=2i+j−3
已知
k
k
k:
{
i
=
⌊
(
k
+
1
)
/
3
⌋
+
1
j
=
k
−
2
i
+
3