数据结构:矩阵

使用数组表示矩阵存储:

学过线性代数的我们都知道,矩阵其实就是一个二维的表格,那么数据结构中的矩阵其实也是一样的,计算机中可以用矩阵这种形式来存储数据。那么我么怎么表示矩阵呢?在这里我们仍然可以使用数组来表示,不过,矩阵始终是个二维的东西,那么我们怎么用数组来表示二维的表格?

答案很简单,使用二维数组即可!

什么二维数组,其实一句话就是:数组里面的元素还是数组。比如说这个亚子。

我们知道计算机中的存储空间是一维的连续存储的空间,但是我们这里描述的这个矩阵是个二维的东西,那么怎么把他存储到计算机中?那我们可以使用映射,将这个二维的东西映射成一维的连续的数据存储到计算机中,而我们这里就有两种映射的方式。

分别是行优先和列优先。

行优先:其实就是先存储一行的,这样一行一行的来存储,就拿上面的这个3阶矩阵来说,先存储第一行,再第二行,最后第三行

实际存下来就是上面这个亚子

那么按照行优先,是怎么确定这个矩阵的某一个元素具体的位置的?那就是使用下面的这个计算公式

一般情况下l1和l2一般都是0,也就是从整个矩阵的第一个元素开始。

 列优先:就是先存储第一列的数据,然后再存储第二列的数据。这样一列一列的存储,从左至右。

 那么存储下来呢就是上面这个亚子。 

列优先的元素位置计算公式如下:

同样常见的l1和l2也是从0开始,也就是整个矩阵的第一个元素开始。

矩阵的压缩存储:

按照我们正常的矩阵存储,其实对内存的空间开销还是比较大的,所以我们自然就想到了压缩存储。

那么什么是矩阵的压缩存储?其实就是为很多个值相同的元素只分配一个存储空间。对零元素不分配存储空间。那么这个值相同的元素,我们很容易就想到了线性代数的特殊矩阵,比如单位阵,对角阵,对称阵等,我们这里说三个。分别是对称矩阵、上下三角矩阵、和对角矩阵。

对称矩阵:就是矩阵的行和列对调之后还是和原来的矩阵相等。那么这种矩阵就是对称矩阵。比如这种;

ok,我们知道了对称矩阵的特性,所以要运用要压缩存储上,因为对称矩阵有这样的特性,所以我们存储的时候就不用将元素全部存储,我们只需要存储这个镜面一半的元素就可以了。比如上面这个,我们只存158234这些元素即可,相同的元素不要重复存储。 

三角矩阵:

三对角矩阵:

因为有三条,所以叫三对角矩阵

稀疏矩阵:

其实就是说矩阵中的元素为0的特别多。

那么我们再存储的时候其实存储分零元素是最能节省空间的。但是稀疏矩阵的位置又没有前面哪些矩阵的规律,所以我们存储的时候就干脆把元素的行列下标也存进去。形成一个三元组。也就是行下标、列下标、元素值。

注意三元组的存储方式牺牲了随机存储的优点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值