重学数据结构——矩阵

这篇具有很好参考价值的文章主要介绍了重学数据结构——矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【矩阵】

下三角矩阵 列优先,矩阵,线性代数,数据结构

 梦回线代(滑稽)

将二维矩阵按行放到一个一维矩阵中,其中下标k和i,j的关系为:

K=n*(i-1)+j-1                            例:A85=S7+j-1=n*7+5-1=7n+4

【矩阵-课堂习题】

例、数组A中,每个元素的长度为3字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素A[8][5]的起始地址为( C

A.SA+141                  B.SA+144                  C.SA+222                  D.SA+225

解析:7n+4=7*10+4=74,每个元素长度3字节首地址SA,则为74*3+SA,即SA+222

【对称矩阵】

下三角矩阵 列优先,矩阵,线性代数,数据结构

下标k和i,j的关系:

K=Si-1+j-1=(1+i-1)(i-1)/2+j-1=i(i-1)/2+j-1(下三角公式推导,利用等差数列求和)

下三角矩阵 列优先,矩阵,线性代数,数据结构      (下三角区和主对角线元素)

下三角矩阵 列优先,矩阵,线性代数,数据结构      (上三角区元素aij=aji)

巧记:Aij,行左列右行列式,左边的下三角以i(行)为主,即等差数列公式以i为主,右等同

【对称矩阵-课堂习题】

例、设有一个对称矩阵A,采用压缩存储方式,以行序为主序存储A11为第一个元素,其存储地址为1,每个元素占一个地址空间,则A85地址为( B

A.23                            B.33                            C.18                            D.40

解析:(1)由k与i,j的公式可知k=Si-1+j-1,但本题由题干可知A11为第一个元素,其存储地址为1,即储存在一维数组中第一个下标为0,所以此时k无需减1,即k=Si-1+j(2)题干:以行序为主序存储,即下三角矩阵 列优先,矩阵,线性代数,数据结构,得k=28+5=33

【三角矩阵】

三角矩阵分为:下三角矩阵和上三角矩阵

下三角矩阵:下三角为权值,上三角全相同(例如全为0或1)

上三角矩阵:上三角为权值,下三角全相同(例如全为0或1)

下三角矩阵 列优先,矩阵,线性代数,数据结构

 下三角矩阵中,上三角区的所有元素均为同一常量。其存储思想与对称矩阵类似,不同之处在于储存完下三角区和主对角线上的所有元素之后,紧接着存储对角线上方的常量一次,故可以将下三角矩阵A[1...n][1...n]压缩存储在B[n(n+1)/2]中

下三角矩阵元素下标之间的对应关系为:

下三角矩阵 列优先,矩阵,线性代数,数据结构

为下三角区和主对角线元素

为上三角区元素

上三角矩阵元素下标之间的对应关系为:

下三角矩阵 列优先,矩阵,线性代数,数据结构

为上三角区和主对角线元素

为下三角区元素

【三角矩阵-课堂习题】

例、若将n阶下三角矩阵A按列优先顺序压缩存放在一维数组B[1..n(n+1)/2+1]中,则存放到B[k]中的非零元素aij()的下标i、j与k的对应关系是( B

A.下三角矩阵 列优先,矩阵,线性代数,数据结构                       B.下三角矩阵 列优先,矩阵,线性代数,数据结构

C.下三角矩阵 列优先,矩阵,线性代数,数据结构                       D.下三角矩阵 列优先,矩阵,线性代数,数据结构

 解析:由题知,按列压缩存储,则第一列有n个元素a1=n,第二列有n-1个元素,a2=n-1....,

aj-1=n-(j-1)+1=n-j+2,aj=n-j+1,Sj-1=下三角矩阵 列优先,矩阵,线性代数,数据结构则此时求出前j-1列个数,我们需要求第i行第j列,则此时需考虑在第j列的第几个,我们可知例如A11,A22,A33都是位于主对角线上为第一个,则A43为第三列的第二个,由此可推出i和j的关系是i-j+1,综上则aij的下标i、j和k的对应关系为下三角矩阵 列优先,矩阵,线性代数,数据结构

【三对角矩阵】

下三角矩阵 列优先,矩阵,线性代数,数据结构

 元素下标之间的关系:

三对角矩阵是按行存放的,我们要求第i行第j列,首先要求前i-1的元素个数,即Si-1=3(i-1)-1,即Sn=3n-1即前三行有8个元素,前四行有11个元素,因为A21,A22,A23分别为1,2,3个元素,则我们可以推出i和j的关系,即为j-i+2,又因下标k从0开始所以最后还需减去一个1,综上我们要求第i行第j列所对应下标k之间的对应关系为:k=3(i-1)-1+j-i+2-1=3i-4+j-i+1=2i+j-3

【三对角矩阵-课堂习题】

例、有一个100阶的三对角矩阵M,其元素mij()按行优先依次压缩存入下标从0开始的一维数组N中。元素M30,30在N中的下标为( B

A.86                         B.87                         C.88                         D.89

解析:K=2i+j-3=2*30+30-3=87

【稀疏矩阵】

稀疏矩阵一般的压缩存储方式有两种:三元组和十字链表

下三角矩阵 列优先,矩阵,线性代数,数据结构

 【稀疏矩阵-课堂例题】

例、有一个的稀疏矩阵,非0元素有10,设每个整型数占2个字节,将稀疏矩阵压缩到三元组表data中时,我们用data[0].i,data[0].j,data[0].v分别存放矩阵行数、列数和非零元个数,总共需要的字节数是( B

A.20                                  B.66                                  C.18000                                  D.33

解析:由题知,为11行,3列,则字节数=11*3*2=66文章来源地址https://www.toymoban.com/news/detail-667219.html

到了这里,关于重学数据结构——矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构——图篇(邻接矩阵、邻接表、深度优先搜索、广度优先搜索)

    描述 图比树更为复杂,展现的是一种多对多的关系,图的结构是任意两个数据对象之间都可能存在某种特定的关系的数据结构 概念 顶点 : 基本介绍 顶点集合表示为V集合,要求图中顶点至少要有一个,即V集合不能为空集。通常使用|V|来表示顶点的个数,通常使用E(V)来表示

    2024年02月04日
    浏览(40)
  • [数据结构]:25-图深度优先遍历(邻接矩阵)(C语言实现)

    目录 前言 已完成内容 图深度优先遍历实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-AdjMatrixFunction.cpp 04-DFS.cpp 结语         此专栏包含408考研数据结构全部内容,除其中使用到C++引用外,全为C语言代码。使用C++引用主要是为了简化指针的使用,避免二重指针的

    2023年04月10日
    浏览(47)
  • 【数据结构与算法】图的基本概念 | 邻接矩阵和邻接表 | 广度优先遍历和深度优先遍历

    🌠 作者:@ 阿亮joy. 🎆 专栏:《数据结构与算法要啸着学》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E) ,其中: 顶点集合V = {x|x属于某

    2024年02月04日
    浏览(69)
  • 数据结构实验6 :图的存储与遍历(邻接矩阵的深度优先遍历DFS和邻接表的广度优先遍历BFS)

    利用邻接矩阵存储无向图,并从0号顶点开始进行深度优先遍历。 输入第一行是两个整数n1 n2,其中n1表示顶点数(则顶点编号为0至n1-1),n2表示图中的边数。 之后有n2行输入,每行输入表示一条边,格式是“顶点1 顶点2”,把边插入图中。 例如: 4 4 0 1 1 3 0 3 0 2 先输出存储

    2024年02月09日
    浏览(63)
  • 数据结构:编写程序用队列实现打印杨辉三角

              本文将通过完成用队列实现打印杨辉三角,代码解释标注全面而且清晰,代码书写也十分规范,适合初学者进行学习,本篇文章算是本人的一些学习记录分享,希望对有需要的小伙伴提供一些帮助~ 希望能帮助大家掌握: 掌握定义顺序队和链队的结点类型的方

    2024年02月06日
    浏览(45)
  • 优先队列----数据结构

    不知道你玩过英雄联盟吗?英雄联盟里面的防御塔会攻击离自己最近的小兵,但是如果有炮车兵在塔内,防御塔会优先攻击炮车(因为炮车的威胁性更大),只有没有兵线在塔内时,防御塔才会攻击英雄。所以你可以得出优先级:距离最近的炮车  炮车 距离最近的小兵 小兵

    2024年02月06日
    浏览(32)
  • 「数据结构」优先级队列

    🎇 个人主页 :Ice_Sugar_7 🎇 所属专栏 :Java数据结构 🎇 欢迎点赞收藏加关注哦! 优先级队列底层是用堆实现的 ,关于堆的实现,之前的文章已经详细介绍过了,文章链接:二叉树1:堆的实现 方法 功能 PriorityQueue() 创建一个空的优先级队列,默认容量是11 PriorityQueue(int i

    2024年02月20日
    浏览(42)
  • 【数据结构】二维数组的行优先、列优先存储问题

    今天同学问我一道感觉很基础的数据结构问题,虽然答案做对了,但是原理一直比较迷,仔细看了一下题,原来是自己把自己绕进去了。。。在此记录一下,大佬如果有更好的方法,可以在评论区留言,不定期更新。 先给出行优先和列优先的计算公式: 设数组为A[m][n]( m 行

    2024年02月10日
    浏览(53)
  • 大话数据结构-图的深度优先遍历和广度优先遍历

      图的遍历分为深度优先遍历和广度优先遍历两种。   深度优先遍历(Depth First Search),也称为深度优先搜索,简称DFS,深度优先遍历,是指从某一个顶点开始,按照一定的规则,访问并记录下一个未访问顶点。对于非连通图,则是按连通分量,采用同一规则进行深度优

    2024年02月04日
    浏览(58)
  • 【数据结构与算法】图的深度优先和广度优先遍历

    😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页 ✨✨座右铭✨✨ : 坚持到底,决不放弃,是成功的保证,只要你不放弃,你就有机会,只要放弃的人,他肯定是不会成功的人。 图是一

    2024年02月02日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包