数据结构— 数组、特殊矩阵、稀疏矩阵(二)

简介: 数据结构— 数组、特殊矩阵、稀疏矩阵

你知道有哪些特殊矩阵吗?


👽👽👽 概述:


😄😄😄特殊矩阵:具有相同的数据或0元素,且数据分布具有一定规律。


😆😆😆分类:


💖💖对称矩阵


💖💖三级矩阵


💖💖对角矩阵


😏😏😏特殊矩阵只有部分有数据,其他内容为零,使用内存中一维空间(一片连续的存储空间)进行存储时,零元素没有必要进行存储,通常都需要进行压缩存储。


😘😘😘压缩存储:多个值相同的矩阵元素分配同一个存储空间,零元素不分配存储空间。


💔💔 存储有效数据,零元素和无效数据不需要存储。


💔💔 不同的举证,有效和无效定义不同。


👽👽👽对称矩阵压缩存储【重点】:


🐋🐋 定义及其压缩方式:

🎃🎃🎃什么是对称矩阵:a(i,j) = a(j,i)


6ae65d62468843deae3a68924f9b9955.png


🎃🎃🎃 对称矩阵的压缩方式:共4种 :


💦💦💦💦下三角部分以行序为主序存储的压缩 。


09ce91601ffa4e24b4d3c7bf05a50a45.png


💦💦💦💦下三角部分以列序为主序存储的压缩 。


a45ac8b5b9cd4f14bb0f9556b3c7cc82.png


💦💦💦💦上三角部分以行序为主序存储的压缩 。


0bce121197ca4a73ae93478f6eab149d.png


💦💦💦💦上三角部分以列序为主序存储的压缩 。


f4078be882fd4705bc985916ccd76815.png


🐋🐋 压缩存放及其公式 :


🎅🎅🎅压缩后存放到一维空间(连续的存放空间中):


85e282dce5b14be1896321723c1b467e.png


🎅🎅🎅对称矩形 A(i,j) 对应 一维数组 s[k] , k与i和j 公式:


f73cdb7cfdb54c68a51277827086314d.png


🐋🐋 小试牛刀:

1、设有一个 20 阶的对称矩阵 A,采用压缩存储的方式,将其下三角部分以行序为主序存


储到一维数组 B 中(矩阵 A 的第一个元素为 a1,1,数组 b 的下标从 1 开始),则矩阵中元素 a9,2 在一维数组 B 中的下标是:


( )。


A.41


B.32


C.18


D.48


265dd556285b4dfc92e57afdb14af717.png


2、设有一个 15 阶的对称矩阵 A,采用压缩存储方式将其下三角部分以行序为主序存储到


一维数组 b 中。(矩阵 A 的第一个元素为 a1,1,数组 b 的下标从 1 开始),则数组元素


b[13]对应 A 的矩阵元素是( )。


A.a5,3


B.a6,4


C.a7,2


D.a6,8


9d58472343214b69ad99777e69a54eaf.png


💙 💜 ❤️ 💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️


🌊🌊快来认识一下三角矩阵吧!


👽👽 概述&存储方式


🍁🍁🍁 三角矩阵分为:上三角矩阵、下三角矩阵。


❄️❄️上三角矩阵:主对角线(不含主对角线)下方的元素值均为0。只在上三角的位置进行数据存储。


56378cb0c21146ce823f7e2571b2726e.png


❄️❄️ 下三角矩阵:主对角线(不含主对角线)上方的元素值均为0。只在下三角的位置进行数据存储 。


93375011b57d419d80ad6bf40e4a9f75.png


🍁🍁🍁 存储方式:三角矩阵的存放方式,与对称矩阵的存放方式相同。


👽👽 上三角矩阵


🍁🍁🍁 上三角矩阵实例:


8c1e11c0de914f6297ff021635da9aad.png


🍁🍁🍁 上三角矩阵对应一维数组存放下标,计算公式 :


e9f67c64842c4e49989b589facad50d8.png


👽👽 下三角矩阵


🍁🍁🍁 下三角矩阵实例:


0afc60fc6c554649b4f09e71daed67f8.png


🍁🍁🍁 下三角矩阵对应一维数组存放下标,计算公式:


a7f7c478e859469d949bd5539e77254b.png


💙 💜 ❤️ 💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚


🌊🌊知道对角矩阵,对角在什么地方吗?


1bf4529d18094f4a995830c32b523d6c.gif

🌲🌲 定义&名词


🍁🍁🍁 对角矩阵:矩阵的所有非零元素都集中在以主对角线为中心的带状区域中,即除主对角线上和直接在主对角线上、下方若干条对角线上的元素之外,其余元素皆为零。


44c53ecc785b4d0d8927f8efd2d9d44e.png


🍁🍁🍁 名词:


❄️❄️ 半带宽:主对角线一个方向 对角线的个数,个数为d。


❄️❄️带宽:所有的对角线的个数。个数为 2d+1。


❄️❄️ n阶2d+1对角矩阵非零元素个数:n(2d+1) - d(d+1)。


❤️💜💚n(2d+1) :下图中所有颜色的个数


❤️ 💜💚d(d+1)/2 :右下方浅蓝色三角的个数


❤️💜💚d(d+1) :2个三级的个数(右下方、左上方)


2d7140c1496b49e8a0e545fadea3c1bd.png


❄️❄️ 一维数组存储个数:n(2d+1) ,若某行没有2d+1个元素,则0补足。


🌲🌲 压缩存储

17376ee7eabe419c956d52d28e7e818a.png


❄️❄️ 压缩后存放一维数组,第一行和最后一行不够2d+1,所以需要补零。


8910306686ff45b196217151045d118c.png


💙 💜 ❤️ 💙 💜❤️ 💚 💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️ 💚💙 💜 ❤️💚


相关文章
|
2月前
|
存储 Java 程序员
数据结构之 - 深入了解数组数据结构
数据结构之 - 深入了解数组数据结构
45 6
|
1月前
|
存储 算法 编译器
数据结构实验之矩阵的运算器(二维数组)
本实验旨在通过团队合作,掌握数组和矩阵相关运算的代码实现,包括矩阵的加减、数乘、转置、乘法、n次方及行列式的计算。实验过程中,成员们需分工协作,解决编程难题,最终实现一个功能完备的矩阵计算器。通过本实验,不仅锻炼了编程能力,还加深了对数学概念的理解,同时培养了团队合作精神。
57 4
|
2月前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
115 64
|
23天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
44 5
|
1月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
51 4
|
2月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
47 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
2月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
26 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
3月前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。
|
1月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
183 9
|
1月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
32 1