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]) 来确定非零唯一元素。当使用三元组结构时有两种存储方法:顺序存储和链式存储。链式结构常用十字链表法。

  • 相关阅读:
    【转载】RocketMQ与Kafka对比(18项差异)
    canal —— 阿里巴巴mysql数据库binlog的增量订阅&消费组件
    CodingTMD’s Reading List
    [LeetCode] Evaluate Reverse Polish Notation, Solution
    [LeetCode] Clone Graph, Solution
    [LeetCode] Sort List, Solution
    [LeetCode] Max Points on a Line, Solution
    [LeetCode] LRU Cache, Solution
    [LeetCode] Binary Tree Preorder Traversal, Solution
    [LeetCode] Reorder List, Solution
  • 原文地址:https://www.cnblogs.com/Python-233/p/15172781.html
Copyright © 2011-2022 走看看