【数据结构-矩阵】矩阵的相关公式推导

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

1 数组

设数组元素长度为 L。

1.1 一维数组

数组下标从 0 开始(A[0]–A[n],一共 n+1 个),假设当前下标为A[i]

  • 第几个 = i + 1
  • 存储地址 = 首地址 + (第几个-1) * L = A[0] 地址 + i * L

数组下标从 1 开始(A[1]–A[n],一共 n 个),假设当前下标为A[i]

  • 第几个 = i
  • 存储地址 = 首地址 + (第几个-1) * L = A[1] 地址 + (i - 1) * L

1.2 二维数组

数组下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 第几个 = i * (a+1) + j + 1
  • 存储地址 = 首地址 + (第几个-1) * L = A[0, 0] 地址 + (i * (a+1) + j) * L

数组下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 第几个 = j * (b+1) + i + 1
  • 存储地址 = 首地址 + (第几个-1) * L = A[0, 0] 地址 + (j * (b+1) + i) * L

数组下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 第几个 = (i-1) * a + j
  • 存储地址 = 首地址 + (第几个-1) * L = A[1, 1] 地址 + ((i-1) * a + j - 1) * L

数组下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 第几个 = (j-1) * b + i
  • 存储地址 = 首地址 + (第几个-1) * L = A[1, 1] 地址 + ((j-1) * b + i - 1) * L

2 对称矩阵

设矩阵 Aaxb,一般情况下,矩阵为方阵,即 a = b = n。设数组元素长度为 L,一般推导思路是从“求矩阵元素是数组的第几个元素”入手,进而推出数组元素的下标。

2.1 上三角部分(i ≤ j)

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = a + (a-1) + (a-2) +…+ (a-i+2) + (j-i+1) = (i-1)(2a-i+2)/2 + (j-i+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + ((i-1)(2a-i+2)/2 + (j-i)) * L

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ j + (i+1) = j(j+1)/2 + (i+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(j+1)/2 + i) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = a + (a-1) + (a-2) +…+ (a-i+1) + (j-i+1) = i(2a-i+1)/2 + (j-i+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(2a-i+1)/2 + (j-i)) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ (j-1) + i = j(j-1)/2 + i
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(j-1)/2 + i - 1) * L

2.2 下三角部分(i ≥ j)

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ i + (j+1) = i(i+1)/2 + (j+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(i+1)/2 + j) * L

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = b + (b-1) + (b-2) +…+ (b-j+2) + (i-j+1) = (j-1)(2b-j+2)/2 + (i-j+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + ((j-1)(2b-j+2)/2 + (i-j)) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ (i-1) + j = i(i-1)/2 + j
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(i-1)/2 + j - 1) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = b + (b-1) + (b-2) +…+ (b-j+1) + (i-j+1) = j(2b-j+1)/2 + (i-j+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(2b-j+1)/2 + (i-j)) * L

3 三角矩阵

设矩阵 Aaxb,一般情况下,矩阵为方阵,即 a = b = n。设数组元素长度为 L。推导过程与对称矩阵相同。

3.1 上三角矩阵(i ≤ j 的元素不全为 0)

(1)当 i ≤ j 时(不全为 0):

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = a + (a-1) + (a-2) +…+ (a-i+2) + (j-i+1) = (i-1)(2a-i+2)/2 + (j-i+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + ((i-1)(2a-i+2)/2 + (j-i)) * L

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ j + i + 1 = j(j+1)/2 + i + 1
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(j+1)/2 + i) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = a + (a-1) + (a-2) +…+ (a-i+1) + (j-i+1) = i(2a-i+1)/2 + (j-i+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(2a-i+1)/2 + (j-i)) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ (j-1) + i = j(j-1)/2 + i
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(j-1)/2 + i - 1) * L

(2)当 i > j 时(全为 0):

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),假设当前下标为A[i, j]

  • 数组的第几个元素 = n(n+1)/2 + 1

矩阵下标从 1 开始(A[0, 0]–A[a, b],每行 a 个,每列 b 个),假设当前下标为A[i, j]

  • 数组的第几个元素 = n(n-1)/2 + 1

3.2 下三角矩阵(i ≥ j 的元素不全为 0)

(1)当 i ≥ j 时(不全为 0):

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ i + j = i(i+1)/2 + j + 1
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(i+1)/2 + j) * L

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = b + (b-1) + (b-2) +…+ (b-j+2) + (i-j+1) = (j-1)(2b-j+2)/2 + (i-j+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + ((j-1)(2b-j+2)/2 + (i-j)) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = 1 + 2 + 3 +…+ (i-1) + j = i(i-1)/2 + j
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (i(i-1)/2 + j - 1) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 数组的第几个元素 = b + (b-1) + (b-2) +…+ (b-j+1) + (i-j+1) = j(2b-j+1)/2 + (i-j+1)
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (j(2b-j+1)/2 + (i-j)) * L

(2)当 i < j 时(全为 0):

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),假设当前下标为A[i, j]

  • 数组的第几个元素 = n(n+1)/2 + 1

矩阵下标从 1 开始(A[0, 0]–A[a, b],每行 a 个,每列 b 个),假设当前下标为A[i, j]

  • 数组的第几个元素 = n(n-1)/2 + 1

4 三对角矩阵

设矩阵 Aaxb,一般情况下,矩阵为方阵,即 a = b = n。设数组元素长度为 L。

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),行优先,假设当前下标为A[i, j]

  • 第 1 ~ i 行有几个元素:3i-1;A[i, j] 是第 i+1 行第 j-i+2 个元素
  • 数组的第几个元素 = (3i-1) + (j-i+2) = 2 * i + j + 1
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (2 * i + j) * L

矩阵下标从 0 开始(A[0, 0]–A[a, b],每行 a+1 个,每列 b+1 个),列优先,假设当前下标为A[i, j]

  • 第 1 ~ j 列有几个元素:3j-1;A[i, j] 是第 j+1 行第 i-j+2 个元素
  • 数组的第几个元素 = (3j-1) + (i-j+2) = 2 * j + i + 1
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (2 * j + i) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),行优先,假设当前下标为A[i, j]

  • 第 1 ~ i-1 行有几个元素:3(i-1)-1;A[i, j] 是第 i 行第 j-i+2 个元素
  • 数组的第几个元素 = 3(i-1)-1 + (j-i+2) = 2 * (i-1) + j
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (2 * (i-1) + j - 1) * L

矩阵下标从 1 开始(A[1, 1]–A[a, b],每行 a 个,每列 b 个),列优先,假设当前下标为A[i, j]

  • 第 1 ~ j-1 列有几个元素:3(j-1)-1;A[i, j] 是第 j 列第 i-j+2 个元素
  • 数组的第几个元素 = 3(j-1)-1 + (i-j+2) = 2 * (j-1) + i
  • 存储地址 = 首地址 + (第几个-1) * L = 数组首地址 + (2 * (j-1) + i - 1) * L

【注】以上公式均不适用于第一行。

5 稀疏矩阵

三元组、十字链表法。文章来源地址https://www.toymoban.com/news/detail-421586.html

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

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

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

相关文章

  • 数据结构学习笔记——多维数组、矩阵

    数组是由n(n≥1)个 相同数据类型 的数据元素组成的有限序列,在定义数组时,会为数组分配一个固定大小的内存空间,用来存储元素,数组在被定义后,其维度不可以被改变。 数组在确定其维度和维界后,元素的个数是固定的,所以不能进行插入和删除运算。数组中最常

    2024年02月03日
    浏览(48)
  • 12-数据结构-数组、矩阵、广义表

    目录 数组、矩阵、广义表   一、数组         二.矩阵 三、广义表         这一章节理解基本概念即可。数组要看清其实下标是多少,并且二维数组,存取数据,要先看清楚是按照行存还是按列存,按行则是正常一行一行的去读写,按列则是,从左至右,一列一列的弄。

    2024年02月13日
    浏览(36)
  • 数据结构之数组、矩阵和广义表

      数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法,为提高利用

    2024年01月22日
    浏览(44)
  • 24考研数据结构-数组和特殊矩阵

    数据结构是计算机科学中的基础概念,它涉及组织和存储数据的方式以及对数据的操作。在数据结构中,数组和特殊矩阵是两种常见的数据组织形式。本文将对数组和特殊矩阵进行介绍,并讨论它们在实际应用中的特点和用途。 数组是一种线性数据结构,它由相同类型的元素

    2024年02月14日
    浏览(35)
  • 【数据结构】数组和字符串(三):特殊矩阵的压缩存储:三角矩阵、对称矩阵——一维数组

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月08日
    浏览(52)
  • 【数据结构】数组和字符串(二):特殊矩阵的压缩存储:对角矩阵——一维数组

    【数据结构】数组和字符串(一):矩阵的数组表示   矩阵是以按行优先次序将所有矩阵元素存放在一个一维数组中。但是对于特殊矩阵,如对称矩阵、三角矩阵、对角矩阵和稀疏矩阵等, 如果用这种方式存储,会出现大量存储空间存放重复信息或零元素的情况,这样会造

    2024年02月08日
    浏览(46)
  • 5:数据结构--5.1:线性结构,5.2:数组与矩阵

     转上一节: 考点1:线性表 1:线性表 顺序表:数据在内存中紧邻。 (1)顺序存储方式:数组的内存是连续分配的,并且是静态分配的,即在使用数组之前需要分配固 定大小的空间。  (2)链表(linked-list)存储方式:链表的内存是不连续的,前一个元素存储地址的下一个地址

    2024年04月09日
    浏览(55)
  • 【数据结构】三对角矩阵(带状矩阵)的压缩 数组下标转换

    王道书中给出定义如下: 书中没有给出具体的推导过程,在CSDN上也没搜到,因此我来发一篇(哈哈哈哈哈 推导过程如下: 首先除去第一行。 从第二行开始,当矩阵的下标为(i,j)的时候: 前面一定会有第一行的2个 会有从第2行开始到第i-1行的每行3个,因此是3(i-1-2+1)=3(i-2)

    2024年02月07日
    浏览(48)
  • 数据结构复盘——第四章:数组和矩阵

    矩阵在线性代数中已经有过详细了解,在考研中矩阵部分常常考察 数组下标 k 与 矩阵行 i 和列 j 的关系。 需要注意的是矩阵下标 i、j 通常是: 1 到 n 1到n 1 到 n ,而数组下标 k 通常是: 0 到 n 2 − 1 0到n^2-1 0 到 n 2 − 1 。 k 与 i、j 的关系就是: k = n ∗ ( i − 1 ) + j − 1 k=n*

    2024年02月07日
    浏览(39)
  • 数据结构实验之矩阵的运算器(二维数组)

    实验目的 掌握并学会运用数组及相关知识 掌握矩阵相关运算的代码实现 学会小组的分工与合作 体会封装的好处 实验任务及要求 要求实现矩阵的计算器,能供用户选择不同菜单,进而实现不同存储形式及调用相应计算的算法,并记录运算过程。 运算程序主要包括:①矩阵的

    2024年01月15日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包