矩阵在计算机图形学、工程计算中都占有举足轻重的地位,本文将讨论如何将矩阵更有效地存储在内存中,并且能够方便地提取矩阵中的元素。感兴趣的同学可以了解一下
首先最开始我们先回忆一下数组的概念
1.数组的定义
数组是由n个相同类型的数据元素构成的有限序列,每个数据元素称为一个数组元素,每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界。
数组与线性表的关系
数组是线性表的推广
- 一维数组可以视为一个线性表
- 二维数组可视为其元素为定长线性表的线性表
- 数组一旦被定义,其维数和维界就不再改变,因此除了数组结构的初始化和销毁外,数组只能执行存储元素和修改元素的操作
在了解完数组的定义后,我们再了解一下数组在内存中是如何存储的
2.数组的存储结构
一个数组的所有元素在内存中占用一段连续的存储空间
一维数组的存储如下:
按行优先:先行后列,先存储行号较小的元素,行号相等先存储列号较小的元素
按列优先:先列后行,先存储列号较小的元素,列号相等先存储行号较小的元素
习题1
在了解数组在内存中的存储方式后,我们可以开始用数组来存储矩阵中的元素了!
3.对称矩阵
概念
对于一个n阶方阵A中的任意一个元素ai,j都有ai,j=aj,i,则称为对称矩阵
对于一个对称矩阵我们可以将其中的元素划分为3个部分:上三角区,主对角线和下三角区
存储方法选择
土办法
用一个n*n的数组去完完整整地将整个矩阵中的元素给存储下来。
压缩存储法
我们发现对于n阶对称矩阵,上三角区的所有元素与下三角区的所有元素相同,若采用上述的土办法,将会浪费几乎一半的空间,因此我们将其中重复相同的元素只存放一次。
存储主对角线和下三角区
习题1
习题2
4.三角矩阵
概念
5.三对角矩阵
概念
对角矩阵称为带状矩阵;在三对角矩阵中,所有非零元素都集中在以主对角线为中心的3条对角线的区域,其他区域的元素都为零
6.稀疏矩阵
概念
矩阵中非零元素的个数t,相对矩阵元素的个数s来说非常少,即s>>t的矩阵称为稀疏矩阵。
到此这篇关于C语言数组学习之特殊矩阵的压缩存储的文章就介绍到这了,更多相关C语言 矩阵的压缩存储内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:C语言数组学习之特殊矩阵的压缩存储


- C语言详解float类型在内存中的存储方式 2023-03-27
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- C语言qsort()函数的使用方法详解 2023-04-26
- Easyx实现扫雷游戏 2023-02-06
- C++ 数据结构超详细讲解顺序表 2023-03-25
- Qt计时器使用方法详解 2023-05-30
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- ubuntu下C/C++获取剩余内存 2023-09-18