SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)

SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1…(n(n+1))/2]中,则在 B 中确定 a[i, j](i

百度题库的正确答案

https://tiku.baidu.com/web/view/73ffd6252bf90242a8956bec0975f46527d3a7ab

若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1…(n(n+1))/2]中,则在B中确定

A.i(i<j)的位置k的关系为( )。A.i*(i-1)/2+jB.j*(j

正确答案 B

答案解析
n阶对称矩阵中的元素满足下述条件:aij=aji,(1<=i,j<=n)。对称矩阵中的每一对数据元素可以共用一个存储空间,因此可以将n2个元素压缩存储到n(n+1)/2个元的空间中,即可以一维数组保存。
假设用一维数组B[n(n+1)/2]作为对称矩阵A的存储结构,则B[k]和矩阵元素aij的下标i、j的对应关系为:
当i>-j时,k=i(i-1)/2+i; 当i<j时,k=j(j-1)/2+i; (以上公式是针对aij和aji保存在同一个单元中的情况)
因为存储下三角元素,所以i<j,k=j(j-1)/2+i。

2021年10月29日15:51:22 修改
原文如此,但是这应该写错了,都是(1<=i,j<=n),应该不会“当i>-j时”,所以应该是 i>=j 吧, 而且应该是k=i(i-1)/2+j

哦哦 原来这样,因为他说存下三角,然后又要i 不过存上三角和下三角好像一样嘛,因为对称。。
【1】 之前把 i 画成 列
之前貌似是把 i 和 j 坐标搞错了, 感谢老哥指出错误
我这图画的,j坐标是行,i是列,感觉这不对啊。说实话我也没搞懂,仅供参考吧,希望有大佬给我讲解一下。。
经提醒,发现其实要-1,因为从0开始的。。。

1+2+3+…+j-1 +i -1== (1+j-1)*(j-1)/2+i -1

SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)_第1张图片

以下是错误的想法。。。

SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)_第2张图片
SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)_第3张图片

xlsx 文档

https://kdocs.cn/l/cgHJuLGLmt3r
[金山文档] SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数.xlsx

你可能感兴趣的:(数据结构,矩阵,线性代数)