为节约存储,只存对角线及对角线以上的元 素,或者只存对角线或对角线以下的元素。 前者称为上三角矩阵,后者称为下三角矩阵。 下三角矩阵 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
无法显示该图片 下下 角 矩巨 阵 2345678 n+1)2-1 B 001011u200212230231u32 n-1n-1 若≥j,数组元素A[引机在数组B中的存放位置为 1+2+…+i+j=(i+1)i/2+j 前i元素总数第i第个元素前元素个数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
若<j,数组元素A[i在矩阵的上三角部 分,在数组B中没有存放,可以找它的对称 元素Ai[:=j*(+1)/2+i n若已知某矩阵元素位于数组B的第k个位置 (心≥0),可寻找满足 i(i+1)/2≤k<(+1)(i+2)/2 的,此即为该元素的行号。 j=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
◼ 若 i < j,数组元素 A[i][j] 在矩阵的上三角部 分, 在数组 B 中没有存放,可以找它的对称 元素A[j][i]:= j *(j +1) / 2 + i ◼ 若已知某矩阵元素位于数组 B 的第 k个位置 (k≥0),可寻找满足 i (i + 1) / 2 k < (i + 1)*(i + 2) / 2 的 i, 此即为该元素的行号。 j = 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=4 角矩阵 012345678 B aoo ao1 a02 a03 a1 a12 a13a2223a33 着i≤j,数组元素A团在数组B中的存放位置为 n+(n-1)+(n-2)+…+(n-i+1)+j-i 前i行元素总数第行第个元素前元素个数
上 三 角 矩 阵 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