数组与矩阵

今天,我从网课上收集了一些数组和矩阵的知识点。我先介绍一下数组的存储结构。数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是顺序存储结构。

要知道,对数组中存储的数据做插入和删除操作,算法的效率是很差的。

由于数组可以是多维的,而顺序存储结构是一维的,因此数组中数据的存储要制定一个先后次序。通常,数组中数据的存储有两种先后存储方式:

以列序为主(先列后行):按照行号从小到大的顺序,依次存储每一列的元素

以行序为主(先行后序):按照列号从小到大的顺序,依次存储每一行的元素。

多维数组中,我们最常用的是二维数组。比如说,当二维数组 a[6][6] 按照列序为主的次序顺序存储时,数组在内存中的存储状态如图 1 所示:
数组与矩阵_第1张图片

图 1 以列序为主的二维数组存储状态

同样,当二维数组 a[6][6]
按照行序为主的次序顺序存储时,数组在内存中的存储状态如图 2 所示:

数组与矩阵_第2张图片

图 2 以行序为主的二维数组存储状态

C 语言中,多维数组的存储采用的就是以行序为主的顺序存储方式。

   接下来我来给大家介绍一下矩阵。啥是矩阵呢?这里所说的矩阵,主要分为以下两类: 

含有大量相同数据元素的矩阵,比如对称矩阵;

含有大量 0 元素的矩阵,比如稀疏矩阵、上(下)三角矩阵;

针对以上两类矩阵,数据结构的压缩存储思想是:矩阵中的相同数据元素(包括元素 0)只存储一个。

对称矩阵

图 1 对称矩阵示意图
数组与矩阵_第3张图片

图 1 的矩阵中,数据元素沿主对角线对应相等,这类矩阵称为对称矩阵。

矩阵中有两条对角线,其中图 1 中的对角线称为主对角线,另一条从左下角到右上角的对角线为副对角线。对称矩阵指的是各数据元素沿主对角线对称的矩阵。

结合数据结构压缩存储的思想,我们可以使用一维数组存储对称矩阵。由于矩阵中沿对角线两侧的数据相等,因此数组中只需存储对角线一侧(包含对角线)的数据即可。好了,以上就是我从网课上和自己搜索了网上的一些资料学到的一些知识。

你可能感兴趣的:(数组与矩阵)