开发工具与关键技术:VS 与 数据结构与算法
作者:刘华叶
撰写时间:2020年5月6日
在用高级语言编程中,通常用二维数组来表示矩阵,然而在实际应用中会遇到一些特殊矩阵,所谓特殊矩阵是指矩阵中相同的元素或者零元素的分布有一定规律。比如:对称矩阵,三角矩阵和对角矩阵等。这些矩阵各有各的特点,下面我就给大家介绍一下。
对称矩阵:
因为对称矩阵中有大量相同的元素,如果给矩阵中每一个元素都分配存储空间的话,显然浪费了存储空间,根据对称矩阵的特点,可为对称矩阵中的每一个元素分配存储空间。
三角矩阵:
当一个方阵An×n的主对角线以下的所有元素皆为常数时,该矩阵称为三角矩阵。三角矩阵有上三角矩阵和下三角矩阵两种。上三节矩阵的特点总是对角线下方。(不包括主对角线)的元素均为常数C,就和下图一样。
而下三角矩阵的特点是对角线上方(不包括主对角线)的元素均为常数C。
三角矩阵和对称矩阵的压缩存储相似,根据三角矩阵的特点,对于上三角矩阵而言,应先存储完对角线上方的元素后,在存储对角线下方常量,因为是同一个常量,只需划分一个存储空间。
对角矩阵:
另外还有一类矩阵是对角矩阵,在这种矩阵中所有非零元素集中在主对角线为中心的带状区域中。
以为三角矩阵为例,安行存储,除第0行和第n-1行是两个元素外,其它每行均为3个非零元素,因此需要存储的元素为2+2+3(n-2)=3n-2.将其压缩存储在B数组中。如图所示。
由于这些特殊的矩阵元素有着一定的规律,在存储的时候为了节省存储空间,可以对这些矩阵进行压缩存储。所谓压缩存储就是为了多个值相同的元素分配一个存储空间,对零元素不分配存储空间。