zoukankan      html  css  js  c++  java
  • 多维数组

    介绍:

    当数据的维数大于1时,成为多维数组,可以看成线性表的推广。

    数组一般不做插入和删除操作,因此数据建立时就固定的元素个数和对应关系。所以一般采用顺序存储结构。

    由于计算机的内存结构是一维的,所以多维数组的数据存储结构是必须根据某种规则排成线性序列。

    一般通过行向量表示:

      Am x n = [[a00, a01, ..., a0n-1], [a10, a11, ...., a1n-1], [ am-1 0, am-1 1, ...., am-1 n-1]]

    列向量:

      Am x n = [[a00,a10, ....,am-1 0], [a01, a11, ...., am-1 1], [a0 n-1, a1 n-1, am-1 n-1]]

    数组的顺序存储结构:

      (1)按行优先存储,数据元素按行向量排列。

      (2)按列优先排序存储。

    矩阵的压缩存储结构:

      一般存储结构是通过二维数组存储矩阵,这种方式随机存取,方便矩阵运算,但是存储空间会浪费,所以对这类矩阵进行压缩存储。

    矩阵分为两大类,特殊矩阵和稀疏矩阵。

    特殊矩阵:包含存储相同的元素或零元素在矩阵内分布有一定规律的矩阵。常见的特殊矩阵有对称矩阵、三角矩阵等。

    对称矩阵:简单描述成有n阶方阵的元素满足 a[i][j] = a[j][i] (0<=i, j <=n-1)就是n阶的对称矩阵。对称矩阵内部的元素是根据主对角线对称的,所以存储上三角或下三角元素就可以。通过C语言的按行优先的存储主对角线下方的元素。

    三角矩阵:以对角线划分,三角矩阵分为上三角和下三角。两者区别在于主队角线的上或下方为常数或零元素的n阶方阵。

    稀疏矩阵:由于特殊矩阵中非零元素的分布有规律,可以在一维数组中对应矩阵元素。但是稀疏矩阵中的非零元素的个数远远小于矩阵元素的总数,为了节约存储空间,可以用压缩存储非零元素。一般稀疏矩阵非零元素分布没有规律,因此存储结构中不仅需要存储元素值还要存储该元素的行、列位置,所以被称为三元组(i,j,a[i][j]) 来确定非零唯一元素。当使用三元组结构时有两种存储方法:顺序存储和链式存储。链式结构常用十字链表法。

  • 相关阅读:
    u-boot mkconfig文件分析
    uboot的lds文件分析
    gitlab webhook jenkins 403问题解决方案
    【python】将json串写入文件,并以json格式读取出来
    sqlalchemy 中 desc 的使用
    【mysql】如何通过navicat配置表与表的多对一关系,一对一关系?设计外键的效果
    【mysql】一对一关系的理解,以及Navicat Premium怎么设置字段的唯一性(UNIQUE)?
    【mysql】时间类型-如何根据不同的应用场景,选择合适的时间类型?
    Navicat Premium Mac 12 破解方法-亲测成功
    【linux】cp 批量复制文件
  • 原文地址:https://www.cnblogs.com/Python-233/p/15172781.html
Copyright © 2011-2022 走看看