
如何将一个n阶对称矩阵(二维数组)映射到一个一维数组中,以节省存储空间。核心逻辑是利用矩阵的对称性(即aij=aji),只存储下三角或上三角部分的元素。图片中给出了两种不同的存储策略及其对应的地址计算公式:1. 存储下三角元素(公式 4-4)当约定以行优先规则存储,且只存储下三角部分(包括对角线)时,矩阵元素aij在一维数组中的位置k计算如下:当i≥j时(即元素位于下三角或对角线上):k=i×(i+1)/2+j含义解析:这是最经典的等差数列求和公式应用。在aij之前,已经完整存储了前i行(第0行到第i−1行)。第0行有1个元素,第1行有2个……第i−1行有i个元素。前i行的总元素个数为i(i+1)/2。加上当前行前面的j个元素,即为最终下标。当ij时(即元素位于上三角区域):k=j×(j+1)/2+i含义解析:因为是对称矩阵,上三角的元素aij等于下三角的元素aji。所以这里直接交换了i和j的角色,利用上述同样的逻辑来计算其在下三角中对应位置的索引。2. 存储上三角元素(公式 4-5)当约定以行优先规则存储,但这次选择存储上三角部分(包括对角线)时,计