为节约存储,只存对角线及对角线以上的元 素,或者只存对角线或对角线以下的元素。 前者称为上三角矩阵,后者称为下三角矩阵。 下三角炮阵 16
• 为节约存储,只存对角线及对角线以上的元 素,或者只存对角线或对角线以下的元素。 前者称为上三角矩阵,后者称为下三角矩阵。 下 三 角 矩 阵 16
上三角炮阵 ·把它们按行存放于一个一维数组B中,称之 为对称矩阵A的压缩存储方式。 数组B共有n+(n-1)+…+1= n*(n+1)/2个元素。 17
上 三 角 矩 阵 • 把它们按行存放于一个一维数组 B 中,称之 为对称矩阵 A 的压缩存储方式。 • 数组 B 共有 n + ( n - 1 ) + + 1 = n*(n+1)/2 个元素。 17
下三角起阵 0 1 23 4 5 67 8 n(n+1)/2-1 B 00 10 L1120 21 L2230 31 32 。。。 On-1n-1 若i≥j,数组元素A[川在数组B中的存放位置 为1+2+…+i+j=(i+1)*i/2+j 前行元素总数第行第个元素前元素个数 18
下 三 角 矩 阵 若 i j, 数组元素A[i][j]在数组B中的存放位置 为 1 + 2 + + i + j = (i + 1)* i / 2 + j B a00 a10 a11 a20 a21 a22 a30 a31 a32 …… an-1n-1 0 1 2 3 4 5 6 7 8 n(n+1)/2-1 前i行元素总数 第i行第j个元素前元素个数 18
若i<j,数组元素A[1在矩阵的上三角部 分,在数组B中没有存放,可以找它的对称 元素A:=j*0+1)/2+i 若已知某矩阵元素位于数组B的第k个位置 (≥0),可寻找满足 i(i+1)/2≤k<(i+1)*(i+2)/2 的,此即为该元素的行号。 i=k-i*(i+1)/2 此即为该元素的列号。 例,当k=8,3*4/2=6≤k<4*5/2=10, 取i=3。则j=8-3*4/2=2。 19
n 若 i < j,数组元素 A[i][j] 在矩阵的上三角部 分, 在数组 B 中没有存放,可以找它的对称 元素A[j][i]:= j *(j +1) / 2 + i n 若已知某矩阵元素位于数组 B 的第 k个位置 (k≥0),可寻找满足 i (i + 1) / 2 k < (i + 1)*(i + 2) / 2 的 i, 此即为该元素的行号。 j = k - i * (i + 1) / 2 此即为该元素的列号。 n 例,当 k = 8, 3*4 / 2 = 6 k < 4*5 / 2 =10, 取 i = 3。则 j = 8 - 3*4 / 2 = 2。 19
上三角炮阵 n =4 1 234567 8 9 B Coo Aoi L02 031 112132223 33 若i≤j,数组元素A)在数组B中的存放位置 为 n+(n-l)+(n-2)+…+(-it1)+i 前行元素总数第行第个元素前元素个数 20
上 三 角 矩 阵 B a00 a01 a02 a03 a11 a12 a13 a22 a23 a33 0 1 2 3 4 5 6 7 8 9 若i j,数组元素A[i][j]在数组B中的存放位置 为 n + (n-1) + (n-2) + + (n-i+1) + j-i 前i行元素总数 第i行第j个元素前元素个数 n = 4 20