数据结构复盘——第四章:数组和矩阵

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


第一部分:矩阵

矩阵在线性代数中已经有过详细了解,在考研中矩阵部分常常考察数组下标 k矩阵行 i 和列 j 的关系。
需要注意的是矩阵下标 i、j 通常是: 1 到 n 1到n 1n,而数组下标 k 通常是: 0 到 n 2 − 1 0到n^2-1 0n21
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵

  • k 与 i、j 的关系就是: k = n ∗ ( i − 1 ) + j − 1 k=n*(i-1)+j-1 k=n(i1)+j1

第一部分习题

  1. 数组A中,每个元素的长度为3个字节,行下标 i 从1到8,列下标 j 从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素 A[8][5] 的起始地址为(C)。
    A.SA+141
    B.SA+144
    C.SA+222(用公式可以求出 A 85 A_{85} A85前面有74个元素,所以它的起始地址就是: S A + 74 ∗ 3 SA+74*3 SA+743
    D.SA+225
  2. 设二维数组 A[1…m,1…n] 按行存储在数组B中,则二维数组元素 A[i,j] 在一维数组B中的下标为(A)。
    A.n*(i-1)+j(题目中没有强调数组B的下标从0开始,再结合其他选项只能选A)
    B.n*(i-1)-j-1(迷惑性选项,“- j”必然是错的)
    C.i*(j-1)
    D.i*m+i-1

第二部分:对称矩阵

对称矩阵就是主对角线两侧的数据相同的方阵,对于这类矩阵我们通常可以节约空间,只存储上三角部分的数据或下三角部分的数据。

  • 此时数组下标 k矩阵行 i 和列 j 的关系通常满足(上三角转置后就是下三角了): k 下三角 = S i − 1 + j − 1 k 上三角 = S j − 1 + i − 1 k_{下三角}=S_{i-1}+j-1\\k_{上三角}=S_{j-1}+i-1 k下三角=Si1+j1k上三角=Sj1+i1
  • 在之前数组存储普通矩阵的表达式中 S x = x ∗ n S_x=x*n Sx=xn,n为矩阵的总列数;而这里因为存储的是上/下三角矩阵,所以结合等差数列求和公式有: S x = x ∗ ( x + 1 ) 2 S_{x}=\frac{x*(x+1)}{2} Sx=2x(x+1)

需要注意的是,为了达到转置的效果,上三角矩阵需要按列存储到数组当中(转置时列会变为行)。结合上面的两个式子可以得出以下关系:
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵

第二部分习题

  1. 设有一个对称矩阵A,采用压缩存储方式,以行序为主序存储A11为第一个元素其存储地址为1,每个元素占一个地址空间,则A85地址为(B) 。
    A.23
    B.33 (前面的元素个数:k=8*(8-1)/2+5-1=32,地址为:1+k*1=33)
    C.18
    D.40

第三部分:三角矩阵

三角矩阵分为下三角矩阵上三角矩阵,需要和对称矩阵的上下三角矩阵区分。

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

此时数组除了需要存储上/下三角区域当中的权值,还需要增加一个位置,记录余下的相同数据(保存一份即可)。
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵

  • 下三角矩阵中元素对应的数组下标: { k 权值区域 = i ∗ ( i − 1 ) 2 + j − 1 ( i ≥ j ) k 相同区域 = n ∗ ( n + 1 ) 2 ( i < j ) \begin{cases}k_{权值区域}=\frac{i*(i-1)}{2}+j-1&(i \geq j)\\\\k_{相同区域}=\frac{n*(n+1)}{2}&(i < j)\end{cases} k权值区域=2i(i1)+j1k相同区域=2n(n+1)iji<j
  • 上三角矩阵中元素对应的数组下标: { k 权值区域 = j ∗ ( j − 1 ) 2 + i − 1 ( i ≤ j ) k 相同区域 = n ∗ ( n + 1 ) 2 ( i > j ) \begin{cases}k_{权值区域}=\frac{j*(j-1)}{2}+i-1&(i \leq j)\\\\k_{相同区域}=\frac{n*(n+1)}{2}&(i > j)\end{cases} k权值区域=2j(j1)+i1k相同区域=2n(n+1)iji>j

其中权值区域的最大下标为: k n n = n ∗ ( n − 1 ) 2 + n − 1 = n ∗ ( n + 1 ) 2 − 1 ( i = j = n ) k_{nn}=\frac{n*(n-1)}{2}+n-1=\frac{n*(n+1)}{2}-1 \quad(i=j=n) knn=2n(n1)+n1=2n(n+1)1i=j=n

第三部分习题

  1. 若将 n 阶下三角矩阵 A 按列优先顺序压缩存放在一维数组 B[1…n(n+1)/2+1] 中,则存放到 B[k] 中的非零元素 aij(1<=i , j < =n)的下标 i、j 与 k 的对应关系是(B)。
    A.(j-1)(2n-j+1)/2+i-j
    B.(j-1)(2n-j+2)/2+i-j+1(题目中说了数组B下标从1开始,所以不需要减1)
    C.(j-1)(2n-j+2)/2+i-j
    D.(j-1)(2n-j+ 1)/2+i-j-1
    【分析】下三角按列优先顺序压缩上三角按行优先顺序压缩一样,需要进行等差数列的反向求和,具体过程见下图:(图中为本题的下三角按列压缩,要求上三角按行压缩只需要进行转置——互换 i 和 j 位置)
    数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵

第四部分:三对角矩阵

三对角矩阵也可称为“爪型”矩阵、带状矩阵,它的特点就是当 ∣ i − j ∣ > 1 |i-j|>1 ij>1 A i j = 0 A_{ij}=0 Aij=0
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵

第四部分习题

  1. 有一个100阶的三对角矩阵 M M M,其元素 m i j m_{ij} mij(1<= i,j<=100)按行优先依次压缩存入下标从0开始的一维数组 N N N中。元素 m 30 , 30 m_{30,30} m30,30在N中的下标是(B)。
    A.86
    B.87(套公式:2*30+30-3=87)
    C.88
    D.89

第五部分:稀疏矩阵

当矩阵中非零元素的个数远少于矩阵元素个数时,我们就将其称为稀疏矩阵。
稀疏矩阵—般的压缩存储方式有两种:三元组十字链表。以下主要介绍三元组,十字链表在图的部分会介绍。
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵
三元组看似是多此一举的把一个矩阵变成了另一个矩阵,但是当原矩阵维数非常大,但却是一个稀疏矩阵时,三元组可以非常有效的压缩数据,并且三元组本身也可以进一步压缩成一元数组。
需要注意的是,稀疏矩阵在压缩存储后便失去了随机存取的特性

第五部分习题

  1. 稀疏矩阵—般的压缩存储方式有两种,即(C)。
    A.二维数组和三维数组
    B.三元组和散列
    C.三元组和十字链表
    D.散列和十字链表

  2. 有一个100×90的稀疏矩阵,非0元素有10个,设每个整型数占2个字节,将稀疏矩阵压缩到三元组表data中时,我们用 data[0].i,data[0].j,data[0].v 分别存放矩阵行数、列数和非零元个数,总共需要的字节数是(B)。
    A.20
    B.66(题目的描述存在陷阱,数组下标为0的地方存储了总行数、总列数、总非零元个数,一共消耗了6字节)
    C.18000
    D.33


小结

矩阵部分主要包含了四类矩阵,考察点就是矩阵数据压缩到数组里时,不同矩阵元素对应的数组下标,分值占比不高。
数据结构复盘——第四章:数组和矩阵,数据结构,数据结构,矩阵文章来源地址https://www.toymoban.com/news/detail-724645.html

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

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

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

相关文章

  • 第四章 数组

    可以多看几遍视频 把上课的代码,自己加加注释,在自己写之前,可以画一个流程图 照着流程图把代码自己实现一遍 不要怀疑自己,不要遇到困难就觉得自己不行,遇到困难就解决困难,编程初学者都是这样一步一步走过来的。 在指针阶段会演示整型、浮点型、字符型传递

    2024年02月12日
    浏览(46)
  • Java---第四章(数组基础,冒泡排序,二分查找,多维数组)

    概念: 数组是编程语言中的一种常见的数据结构,能够存储一组相同类型的数据 作用: 存储一组相同类型的数据,方便进行数理统计(求最大值,最小值,平均值以及总和),也可以进行信息的展示 定义: 第一种: 只能在定义数组同时赋值时使用 第二种: 可以在定义数组

    2024年02月09日
    浏览(50)
  • 第四章 matlab的循环结构

    循环(loop)是一种 matlab 结构,它允许我们多次执行一系列的语句。循环结构有两种 基本形式:while 循环和 for 循环。两者之间的最大不同在于代码的重复是如何控制的。在 while 循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件,重复就进行下 去。相对地,在

    2024年02月06日
    浏览(39)
  • 形象谈JVM-第四章-JVM内存结构

    给我一个CPU,给我一块内存,我来执行一段代码。 我要如何分配呢? new User(); 这里有一个有一个User类,如果我要new出来User对象,必须先知道它长什么样子,我先搞一块区域出来,把User类的样子给存下来。 可以把 “User类的样子” 比作造房子的 “图纸” 或者 “模板” ;

    2024年02月11日
    浏览(38)
  • 第四章 数据关联分析方法

    基本概念和方法 关联规则和算法应用 基本概念和术语 关联规则算法应用: 一个关联规则分析的例子—————超市购物篮分析     不要看 后面数字看不懂      项集:是指项的集合。包含k个项的项集称为k-项集 支持度:若A是一个项集,则A的支持度表示在所有事务T中同时

    2024年02月02日
    浏览(40)
  • 【考研数学】线性代数第四章 —— 线性方程组(1,基本概念 | 基本定理 | 解的结构)

    继向量的学习后,一鼓作气,把线性方程组也解决了去。O.O 方程组 称为 n n n 元齐次线性方程组。 方程组 称为 n n n 元非齐次线性方程组。 方程组(I)又称为方程组(II)对应的齐次线性方程组或导出方程组。 方程组(I)和方程组(II)分别称为齐次线性方程组和非齐次线

    2024年02月11日
    浏览(44)
  • 数据库第四章习题_完整版

    1.1 请考虑以下 SQL 查询,该查询旨在查找 2017 年春季讲授的所有课程的标题以及教师的姓名的列表。 请问这个查询有什么问题? 首先 section 中并没有我们需要使用到的属性,所以这里 “natural join setion” 是多余的。 其次,更重要的一点是:在 instructor 关系和 course 关系中都有

    2024年02月07日
    浏览(38)
  • 《计算机网络》第四章 数据链路控制

    为什么要设计数据链路层 在原始的物理传输线路上传输数据信号是有差错的, 存在一定的误码率 。 在设计数据链路层的目的就是如何在有差错的线路上, 进行无差错传输 。向网络层提供高质量的服务。 从网络参考来看,物理层之上各层都有改善 数据传输质量 的要求,数

    2024年02月01日
    浏览(53)
  • 第四章——数据库的安全性

    问题的提出:数据库安全性产生的原因 数据库的一大特点是共享性 数据共享必然带来数据库安全性问题 数据库系统中的数据共享不能是无条件的共享 数据库的安全性是指保护数据库以防止不合法的使用所造成的的数据泄露、更改或破坏 系统安全保护措施是否有效是数据库

    2023年04月08日
    浏览(42)
  • 【计算机网络 - 第四章】网络层:数据平面

    目录 一、网络层概述 1、主要作用 2、控制平面方法 3、网络层提供的两种服务 二、路由器工作原理 1、路由器总体结构 2、输入、输出端口处理 (1)输入端口 (2)输出端口 3、交换 (1)经内存交换 (2)经总线交换 (3)经互联网络交换  4、排队问题 (1)输入排队、输出

    2024年02月06日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包