ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构系列(五)-多维数组

2019-09-12 11:41:06  阅读:370  来源: 互联网

标签:LOC 元素 矩阵 数组 aij 多维 数据结构 col


本篇介绍数据结构-多维数组

思维导图

多维数组

  • 数组的顺序存储

    • 按行优先顺序:将数组元素按行向量排列,第 i+1 个行向量紧接在第 i 个行向量后面。

        【例】二维数组 A mn 的按行优先存储的线性序列为:
        a11 ,a12 ,…,a1n ,a21 ,a22,…,a2n ,……,am1 ,am2 ,…,amn
      
    • 按列优先顺序:将数组元素按列向量排列,第 i+1 个列向量紧接在第 i 个列向量后面。

        【例】二维数组 A mn 的按列优先存储的线性序列为:
        a11 ,a21 ,…,am1 ,a12 ,a22 ,…,am2 ,……,a1n ,a2n ,…,amn
      
  • 数组元素的地址计算公式

    • LOC(aij)=LOC(a00)+(i×n+j)×d

       【例】LOC(00)=100,d=2,计算a23的存储地址:
      
       LOC(a23)=100+(2*5+3)*2=126
      
    • 三维数组的地址计算:

      LOC(aijk)=LOC(000)+(i * n * p+j * p+k)*d

  • 特殊矩阵

      指的是相同值的元素或者零元素在矩阵中的分布有一定规律的矩阵。
    
    • 对称矩阵

        若n阶方阵A中的元素满足aij=aji(0≤i;j≤n-1),则称A为n的对称矩阵。
      
        ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS83LzMxLzE2YzQ3NDI0MjA0YmUxMGM?x-oss-process=image/format,png)
      
      • sa[k]与aij之间存在的关系

          若i≥j时,k=i*(i+1)/2+j;
          若i<j时,k=j*(j+1)/2+i;
          
          
          因此,aij的存储地址的计算公式:LOC(aij)=LOC(sa[k])=LOC(sa[0])+k*d
        
    • 三角矩阵
      三角矩阵有上三角和下三角两种。下三角矩阵的主对角线上方均为常数c或者零(图1)。上三角矩阵的主对角线下方均为常数c或者零(图2)。

        求三角矩阵的aij一共的元素个数:i*(2*n-i+1)/2
      
      • sa[k]与aij之间存在的关系

          若i≥j时,k=i*(i+1)/2+j;
          若i<j时,k=n*(n+1)/2;
        
  • 稀疏矩阵

      通常把有s个非零元素,而s远远小于矩阵元素的总数,则把这种矩阵称为稀疏矩阵。
    
    • 三元组表

      如果将表示叙述矩阵非零元素的三元组按行优先的顺序排列,则可得到一个其结点均为三元组的线性表,则把这种线性表的顺序存储结构称为三元组表。

  • 转置方法

    • 一般的转置算法

      对矩阵A中的行号和列号互换后再依次存入到矩阵B中。

    • 快速转置算法

        设两个向量:num和cpot
        
        num[col]表示矩阵M中第col列中的非零元素个数。
        
        cpot[col]指M中第col列的第一个非零元在b.data中的恰当位置。
        
        有下面两个公式:
        
        cpot[1]=1;
        
        cpot[col]=copt[col-1]+num[col-1]  (col≥2)
      

标签:LOC,元素,矩阵,数组,aij,多维,数据结构,col
来源: https://blog.csdn.net/u012439736/article/details/100766382

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有