北航软件工程专业考研991数据结构总结:
三、数组
1.一维数组和二维数组的存储;
2.矩阵的压缩存储的基本概念;
3.对称矩阵、对角矩阵以及三角矩阵的压缩存储。
数组:序列和值的偶对
1、一位数组和二维数组的存储
一维数组的存储:a[1] + (n-1) i
二维数组的存储:
行序存储:按行存储,先存第一行 a[i][j] = a[1][1] + (i-1)n + j-1
列序存储:按列存储,先存第一列 a[i][j] = a[1][1] + (j-1)m + i-1
2、矩阵的压缩存储的基本概念
对多个值相同的元素或者分布有规律的元素分配尽可能少的空间,而对0元素不分配存储空间
3、对称矩阵,对角矩阵以及三角矩阵的压缩存储
对称矩阵:a[i][j] = a[j][i] 0 <= i,j <= n
存储方式:只存储对角线和对角线右上三角的元素,需要 n(n+1)/2 个存储空间 1 + 2 +...+n
元素读取: i > j i*(i-1)/2 + j-1
j > i j*(j-1)/2 + i-1
对角矩阵:非0元素集中在主对角线两边,其余元素为0
以3对角矩阵举例:元素有 n + n-1 + n-1 = 3n-2 个元素
存储方式:按行存储,不分配0元素
元素读取:2 * i + j - 3
稀疏矩阵:0元素较多的矩阵
存储方式:三元组 (i, j, v),第i行j列值为v的元素
特殊的三元组:(m,n,t),表示总行数m,总列数n,总非0元素的个数
t个非0元素的稀疏矩阵用 t+1 个三元组表示,其中,第一个表示总行数,列数,总非0元素的个数,第二个到t+1个表示t个非0元素的信息