书上的细节补充:

数组的元素在内存中占用连续的存储空间

一般的矩阵在压缩以后依旧保留了其随机存取的特性,可以逆向解析地址得到位序

这个考察的并不多,但不代表不会考察,对于任意给定的压缩状态都应该会逆向解析

包括对称的行优先、列优先,上、下三角矩阵的行优先、列优先,三对角矩阵对应

其中应该注意一点就是对称矩阵公式推导是和上下三角一样的

但其毕竟还是有两个元素的,对称的两个元素存取所对应的公式是恰相反的

经典的对应统考题,十四题

稀疏矩阵存储的方式可以有多种,但具体看书上为好


数组存储与压缩:

两种映射方式,行优先、列优先,相应公式的推导和应用

其实最本质的基本不变,就是LOC+K-1,LOC是起始地址,K是元素是第K个,中间隔几个

最需要注意的应该是数组本身是零还是一开始,以及内存中存储是零还是一开始

具体公式的推导不难,但结合后面的几种矩阵存储推导过程就会比较多,略微麻烦

总体就是一个计算量和推导过程繁琐容易错,要特别注意细节问题

目前统考那么多年基本限定在了二维数组,基本没有往高维拓展的研究

如果真的要考试的话,其实考前还是可以了解一下的


矩阵下标一般都是从一开始的,一维存储数组一般都是零开始的

但具体要看题目给定,统考题都会清晰明确给定,存储数组和矩阵分别的序号关系

平时推导训练的时候两边都需要考虑,注意细节问题

N阶矩阵就是有N行、N列的矩阵,一开始末尾是N,零开始末尾是N-1

A【N】和A【0…N】的问题已经解释过了,就不再具体赘述


对称矩阵需要和三角矩阵区分开,三角矩阵一般概括为上三角和下三角

对称矩阵只需要从N·(N+1)/2个元素存储,而上下三角矩阵最后还需要附带一个元素

是要比对称矩阵多一个的,这个要注意

稀疏矩阵,主要缺点是丧失了随机存取的特性,“主要”这个词统考是敏感考点词

课后1、9、10、12有具体的对概念的补充


具体计算:

推导过程就不多说,纸上都列举过,只需要熟练推导即可,主要还是声明一些细节

对称矩阵、三角矩阵推导类似,先算出对应这是第K个元素,再算对应下标

对称矩阵以下三角存储和以上三角存储的运算是两回事,对应课后习题的第三题

存储数组零开、一开,矩阵零开、一开,行优先、列优先,都是注意点

一般矩阵默认从一开始,C语言里面的数组默认从零开始存储数据

推导本身容易犯错,其实更多也是不熟练的原因,完全可以多加练习的


课后第四题习题,现在应该是清楚问题在哪,在于行就容易惯性认为是一行

列就容易惯性认为是一列,而其对应的行序号是从上向下,列序号则才是行的长度

一个易错点


矩阵与存储数组、内存映射:(逆推)

最麻烦的考法应该是先矩阵存储到数组里面,然后再给出内存地址,让你计算对应下标

虽然统考最近看起来考察的难度都不高并且题型比较单一,但还是要防着点

毕竟个人认为这种东西就是纯粹的熟练度和细节把握,多推导几遍是肯定不会出错的

矩阵一般从一开始存储,当然也不排除矩阵从零开始存储,这个是第一个注意

矩阵的行列分别是多少要清楚,这是第二个注意的方向,矩阵到底是什么型的是第三个

矩阵映射到一维存储数组,就有好几个需要注意的

存储数组是从零开始还是从一开始的,需要是按行优先还是按列优先,有无算错

内存映射,一维数组一般都是顺序存储,所以只需要考虑每个单元的大小和起始地址

从数组位序反推得到K,然后根据公式和K的等式,记住对应的i和j能等于还是不等于零

以此去逆凑就行,可以把课后习题改编作为训练的样本去测试


细节上面的考究基本是这一些:

矩阵从零开始还是从一开始,数组从零开始还是从一开始,矩阵末序号、数组末序号

矩阵的行、列分别多少,矩阵是什么类型的矩阵

上三角还是下三角,行优先还是列优先,公式推导有没有算错…