多维数组

介绍:

当数据的维数大于1时,成为多维数组,可以看成线性表的推广。

数组一般不做插入和删除操作,因此数据建立时就固定的元素个数和对应关系。所以一般采用顺序存储结构。

由于计算机的内存结构是一维的,所以多维数组的数据存储结构是必须根据某种规则排成线性序列。

一般通过行向量表示:

  Am x n = [[a00, a01, ..., a0n-1], [a10, a11, ...., a1n-1], [ am-1 0, am-1 1, ...., am-1 n-1]]

列向量:

  Am x n = [[a00,a10, ....,am-1 0], [a01, a11, ...., am-1 1], [a0 n-1, a1 n-1, am-1 n-1]]

数组的顺序存储结构:

  (1)按行优先存储,数据元素按行向量排列。

  (2)按列优先排序存储。

矩阵的压缩存储结构:

  一般存储结构是通过二维数组存储矩阵,这种方式随机存取,方便矩阵运算,但是存储空间会浪费,所以对这类矩阵进行压缩存储。

矩阵分为两大类,特殊矩阵和稀疏矩阵。

特殊矩阵:包含存储相同的元素或零元素在矩阵内分布有一定规律的矩阵。常见的特殊矩阵有对称矩阵、三角矩阵等。

对称矩阵:简单描述成有n阶方阵的元素满足 a[i][j] = a[j][i] (0<=i, j <=n-1)就是n阶的对称矩阵。对称矩阵内部的元素是根据主对角线对称的,所以存储上三角或下三角元素就可以。通过C语言的按行优先的存储主对角线下方的元素。

三角矩阵:以对角线划分,三角矩阵分为上三角和下三角。两者区别在于主队角线的上或下方为常数或零元素的n阶方阵。

稀疏矩阵:由于特殊矩阵中非零元素的分布有规律,可以在一维数组中对应矩阵元素。但是稀疏矩阵中的非零元素的个数远远小于矩阵元素的总数,为了节约存储空间,可以用压缩存储非零元素。一般稀疏矩阵非零元素分布没有规律,因此存储结构中不仅需要存储元素值还要存储该元素的行、列位置,所以被称为三元组(i,j,a[i][j]) 来确定非零唯一元素。当使用三元组结构时有两种存储方法:顺序存储和链式存储。链式结构常用十字链表法。

posted @ 2021-10-26 22:28  TongXiaLi  阅读(493)  评论(0编辑  收藏  举报